作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
难以理解 scalaz 中 === 的行为
1. scala> 1.some === Some(1)
res33: Boolean = true
2. scala> Some(1) === 1.some
<console>:14: error: value === is not a member of Some[Int]
Some(1) === 1.some
^
3. scala> (Some(1):Option[Int]) === 1.some
res35: Boolean = true
最佳答案
Some(1)
返回 Some[Int]
而不是 Option[Int]
;整点.some
是返回Option[Int]
而是与 scalaz 风格更兼容。 Scalaz 是为基于非子类型 ADT 的编程风格而编写的,并且大多数 scalaz 类型类对子类型的支持很少(特别是,它们通常是不变的;通常这会改进类型推断并意味着在用户犯错时提供更好的错误消息,但在对子类型较差支持的成本)。如果您大量使用 scalaz,您可能会发现使用 scalaz 风格的“智能构造函数”最容易,例如 .some
每时每刻。
关于Scalaz === on Some,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169675/
我是一名优秀的程序员,十分优秀!