2
這裏是來自ScalaZ neophite的問題。 我不太明白如何:scalaz中的行爲不明白
1.some
或脫節相關:
"Success!".right
工作。 我無法找到任何允許上述行爲的隱式轉換。 我知道如何使用它們,但我對它們的實現感興趣。 謝謝。
這裏是來自ScalaZ neophite的問題。 我不太明白如何:scalaz中的行爲不明白
1.some
或脫節相關:
"Success!".right
工作。 我無法找到任何允許上述行爲的隱式轉換。 我知道如何使用它們,但我對它們的實現感興趣。 謝謝。
含有方法some
類是OptionIdOps
final class OptionIdOps[A](self: A) {
def some: Option[A] = Some(self)
}
如果你看的定義中,你會看到一個額外的隱含適用於任何類型的A
到OptionIdOps
一個特徵定義中:
trait ToOptionIdOps {
implicit def ToOptionIdOps[A](a: A) = new OptionIdOps(a)
}
事實上,編譯器的確如此:
val someOfInt = new OptionIdOps(1).some
感謝Yuval,像往常一樣,你的回答非常翔實 – Adrian