这里是一位 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
关于scala - 不理解 scalaz 中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782922/