【发布时间】:2017-03-14 10:04:43
【问题描述】:
来自 ScalaZ 新手的问题。 我不太明白:
1.some
或析取相关:
"Success!".right
工作。 我找不到任何允许上述行为的隐式转换。 我知道如何使用它们,但我对它们的实现很感兴趣。 谢谢。
【问题讨论】:
来自 ScalaZ 新手的问题。 我不太明白:
1.some
或析取相关:
"Success!".right
工作。 我找不到任何允许上述行为的隐式转换。 我知道如何使用它们,但我对它们的实现很感兴趣。 谢谢。
【问题讨论】:
包含方法some的类是OptionIdOps
final class OptionIdOps[A](self: A) {
def some: Option[A] = Some(self)
}
如果您查看定义内部,您会在 trait 定义中看到可用于任何类型 A 到 OptionIdOps 的附加隐式:
trait ToOptionIdOps {
implicit def ToOptionIdOps[A](a: A) = new OptionIdOps(a)
}
事实上,编译器会这样做:
val someOfInt = new OptionIdOps(1).some
【讨论】: