2013-05-13 39 views
2

我基本上有下面的代碼中的函數,我想消除的doSomethingElse()重複:如果需要else子句

fun a -> 
    if a = b then 
     let c = expensiveOperation() 
     if c = d then 
      result 
     else 
      doSomethingElse() 
    else 
     doSomethingElse() 

我想我應該能夠消除雙方else子句。並讓它返回resultdoSomethingElse()。當我這樣做時,來自編譯器的錯誤消息是:「此表達式預計具有類型單位,但此處具有類型int」

爲什麼if表達式需要else子句?

+3

這個問題是在這裏找到答案:http://stackoverflow.com/a/16490473/701062 – 2013-05-13 17:18:00

回答

3

這相當於你寫的東西,但我想知道你的意思是否是別的。

if a = b && expensiveOperation() = d then result 
else doSomethingElse() 
+0

我們的目標是避免'expensiveOperation()',我並沒有考慮過的布爾表達式的快捷方式。如果a = b',我們只會評估'&&'的右邊,所以我可以按照你的建議來做。 – jeffesp 2013-05-13 17:39:09