gpt4 book ai didi

scala - Option.zip 返回列表,而不是选项

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

标准库文档描述 zip部分签名为 def zip[B](that: GenIterable[B]): Option[(A, B)]但是 Some(1) zip Some(2)返回 List((1,2))不是 Some((1,2)) .是错误的实现还是错误的文档?

最佳答案

错误的文档。
zip实际上是在 Iterable 上定义的, 适用于 Option由于隐式转换 option2Iterable (如果仔细观察,这在文档中明确说明)。

为此 Option首先转换为 Iterable然后是 zip支持操作。

这样做是为了代码重用,但它忽略了 Iterable 的某些情况。方法直接在 Option 上有意义不需要隐式转换。

这是邮件列表中的相关讨论:https://groups.google.com/forum/#!topic/scala-language/MFU5PPt_jYw

如果您确实需要zip两个选项,您可以使用此解决方法:

(opt1 zip opt2).headOption

此外,正如 Travis 在评论中指出的那样,您也可以利用 scalaz Zip type class,虽然你必须使用 fzip相反。
opt1 fzip opt2

关于scala - Option.zip 返回列表,而不是选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26345930/

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