我的一個朋友向我展示了以下代碼:
calculateAge :: (Int, Int, Int) -> Int
calculateAge (d2, m2, y2)
| 11 > m2 = 2021 - y2
| 11 == m2 && 10 >= d2 = 2021 - y2
| otherwise = 2021 - y2 - 1
是什么| 運營商代表什么?是不是只要模式匹配,其余的就會被執行?或者它像一個建構式?
uj5u.com熱心網友回復:
|不是運營商。這是一個守衛[wiki]。后面的運算式|是一個布爾運算式。如果它的計算結果為True,那么它將“觸發”與其關聯的運算式。
這意味著如果模式匹配,守衛將被從上到下評估,并且對于評估為 的第一個守衛,True它將觸發相應的運算式。otherwise只是 的別名True,因此otherwise將始終評估為True。這意味著如果在otherwise守衛觸發之前沒有列出守衛,則 with 子句otherwise將觸發。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352614.html
標籤:哈斯克尔
上一篇:建立一個長度為N的串列
