不理解 scalaz 中的行为
Behavior in scalaz not understood
来自 ScalaZ 新手的问题。
我不太明白:
1.some
或相关的析取:
"Success!".right
工作。
我找不到任何允许上述行为的隐式转换。
我知道如何使用它们,但我对它们的实现很感兴趣。
谢谢。
包含方法some
的class是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
来自 ScalaZ 新手的问题。 我不太明白:
1.some
或相关的析取:
"Success!".right
工作。 我找不到任何允许上述行为的隐式转换。 我知道如何使用它们,但我对它们的实现很感兴趣。 谢谢。
包含方法some
的class是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