【问题标题】:Behavior in scalaz not understoodscalaz中的行为不理解
【发布时间】:2017-03-14 10:04:43
【问题描述】:

来自 ScalaZ 新手的问题。 我不太明白:

1.some

或析取相关:

"Success!".right 

工作。 我找不到任何允许上述行为的隐式转换。 我知道如何使用它们,但我对它们的实现很感兴趣。 谢谢。

【问题讨论】:

    标签: scala scalaz


    【解决方案1】:

    包含方法some的类是OptionIdOps

    final class OptionIdOps[A](self: A) {
      def some: Option[A] = Some(self)
    }
    

    如果您查看定义内部,您会在 trait 定义中看到可用于任何类型 AOptionIdOps 的附加隐式:

    trait ToOptionIdOps {
      implicit def ToOptionIdOps[A](a: A) = new OptionIdOps(a)
    }
    

    事实上,编译器会这样做:

    val someOfInt = new OptionIdOps(1).some
    

    【讨论】:

    • 感谢 Yuval,像往常一样,您的回答非常有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多