斯卡拉的尝试的monadic链接
发布时间:2020-12-16 18:59:03 所属栏目:安全 来源:网络整理
导读:考虑使用monadic for-understanding的函数f,g和h的以下链接. for { x - List ( 11,22,33,44,55 ) y - f ( x ) z - g ( y ) a - h ( z ) } yield a 如果f,g和h都有签名: Int = Option [ Int ] 然后for-comprehension编译好.但是,如果我替换Option [Int] 试试
考虑使用monadic for-understanding的函数f,g和h的以下链接.
for { x <- List ( 11,22,33,44,55 ) y <- f ( x ) z <- g ( y ) a <- h ( z ) } yield a 如果f,g和h都有签名: Int => Option [ Int ] 然后for-comprehension编译好.但是,如果我替换Option [Int] y <- f ( x ) 以下错误消息. error: type mismatch; found : scala.util.Try[Int] required: scala.collection.GenTraversableOnce[?] y <- f ( x ) 为什么? Option [_]和Try [_]都是(或应该是)monad,并且应该如草绘一样顺畅. 解决方法
您只能在理解中使用相同类型的monad.在这种情况下,您的所有值都必须是GenTraversableOnce,因为第一个值是.它适用于Option,因为存在从Option到Seq的隐式转换,但这对于Try来说是不可能的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |