在今年的Devoxx會議上,Dick Wall在Scala編程中給出了presentation設計和模式;第一部分應該是基礎知識的簡要介紹。在1:09:35,他寫了如下函數:Scala:選項類型的數字運算
def safeDiv(a: Int, b: Int): Option[Int] = if (b == 0) None else Some(a/b)
它返回一個編譯錯誤[good]。我的問題是,因爲這是遇到一個相當常見的場景:我該怎麼辦整數運算*/+ - 對
safeDiv(6, 2) // Some(2)
像
safeDiv(6, 2) * 6 // 18 [error]
感謝@Nyavro,雖然我得到了一個警告,說我需要導入scala.language.implicitConversions,你的解決方案工作。不過,我想知道,除了在Option [Int]類型上定義方法之外,是否有更簡單的方法來完成此操作。我正在考慮將Option轉換爲Int的方式,Scala中有這樣的事情嗎? – 7kemZmani
@Nyavro,你也可以創建一個'隱式類...',那麼你不需要單獨的'implicit def'。 @AbdulelahAlJeffery,你看看'getOrElse()'嗎? – jwvh
其實你不能直接將Option [Int]轉換爲Int,因爲可能有None值。 – Nyavro