gpt4 book ai didi

Scalaz === on Some

转载 作者:行者123 更新时间:2023-12-01 12:37:37 25 4
gpt4 key购买 nike

难以理解 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

我可以理解 (1) 并且我甚至希望 (2) 给出相同的结果。

在 (3) 中,我不得不将 Some 转换为 Option 以获得结果。

我查看了 scalaz 的源代码,但无法获得。

请解释。

Scalaz 版本 = 7.1.0

Scala 版本 = 2.11.2

最佳答案

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com