kek*_*coh 5 monads scala scala-cats
我想知道是否存在一个函数(在 scala 或猫中)忽略flatMap. 例如
Some("ignore this").ignoreArgumentFlatMap(Some("result"))
Run Code Online (Sandbox Code Playgroud)
这将与
Some("ignore this").flatMap(_ => Some("result"))
Run Code Online (Sandbox Code Playgroud)
它>>在猫中被称为。
scala> import cats.implicits._
import cats.implicits._
scala> Option("ignore this") >> Some("result")
res14: Option[String] = Some(result)
Run Code Online (Sandbox Code Playgroud)
文档明确说
fa.flatMap(_ => fb) 的别名。
与 *> 不同,fb 被定义为按名称参数,允许在计算 fb 不是堆栈安全的情况下使用此方法,除非暂停在 flatMap 中。
还有productR或*>。
scala> Option("ignore this").productR(Some("result"))
res15: Option[String] = Some(result)
scala> Option("ignore this") *> Some("result")
res16: Option[String] = Some(result)
Run Code Online (Sandbox Code Playgroud)
就像文档所说的那样,它的论点不是按名称进行的。所以它或多或少相当于
val x0 = Some("result")
Some("ignore this").flatMap(_ => x0)
Run Code Online (Sandbox Code Playgroud)
还有productREval,如果你想要一个替代评估策略。
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |