无法解析 Option 类型的 Scala flatMap 方法。这样做的正确方法是什么?

布莱恩·叶
  def jobEventToJobEventTimeLine(jobEvent: JobEvent): JobEventTimeline = {
    val OpFields(stepId, jobBaseStepId, fieldId) = extractFromOp(jobEvent.getOp)
    JobEventTimeline(
      jobEvent.getJobId,
      if (jobEvent.isSetTyp) Some(jobEvent.getTyp.toString) else None,
      if (jobEvent.isSetInPlanning) Some(jobEvent.inPlanning) else None,
      jobEvent.getPedigree.getTeamId,
      jobEvent.getPedigree.getActorId,
      if (jobEvent.getPedigree.isSetAdminActorId) Some(jobEvent.getPedigree.getAdminActorId) else None,
      jobEvent.getPedigree.getSessionId,
      if (jobEvent.getPedigree.isSetClientSessionId) Some(jobEvent.getPedigree.getClientSessionId) else None,
      jobEvent.getPedigree.getCreatedAt,
      jobEvent.getPedigree.getSeqId,
      if (jobEvent.getPedigree.isSetIsSideEffect) Some(jobEvent.getPedigree.isSideEffect) else None,
      jobEvent.getOp.getSetField.toString,
      stepId,
      jobBaseStepId,
      fieldId,
      if (jobEvent.isSetReceivedAt) Some(jobEvent.getReceivedAt) else None
    )
  }

  def ToJobEvent(binData: Array[Byte]): Option[JobEventTimeline] = FuncUtils.deserializeJobEvent(binData) flatMap Some(jobEventToJobEventTimeLine(_))

我正在尝试使用 flatMap 作为绑定运算符来将 monadic 值应用于 monad,但是我的 IDE 说 flatMap 无法解析。这样做的正确方法是什么?

阿列克谢·罗曼诺夫

Some(jobEventToJobEventTimeLine(_))意味着Some(x => jobEventToJobEventTimeLine(x)),不是x => Some(jobEventToJobEventTimeLine(x)),所以类型不匹配。

FuncUtils.deserializeJobEvent(binData).flatMap { x => Some(jobEventToJobEventTimeLine(x)) }

明确地。

if (jobEvent.isSetTyp) Some(jobEvent.getTyp.toString) else None可以写成Option.when(jobEvent.isSetTyp)(jobEvent.getTyp.toString).

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以更简洁地使用Scala的Option flatMap方法吗?

来自分类Dev

使用 flatMap 进行类型解析

来自分类Dev

Scala flatMap,ms和e是什么?

来自分类Dev

泛型无法正确解析方法类型

来自分类Dev

Scala方法无法推断返回类型

来自分类Dev

具有类型参数的Scala flatMap函数语法

来自分类Dev

Scala中的flatMap函数和返回类型错误

来自分类Dev

为什么Scala无法推断_的类型?

来自分类Dev

Scala Option类型上限不明白

来自分类Dev

Scala:无法解析重载方法(Flink WatermarkStrategy)

来自分类Dev

为什么从Option开始的这种理解无法在Scala中编译?

来自分类Dev

为什么从Option开始的这种理解无法在Scala中编译?

来自分类Dev

Scala 方法的返回类型

来自分类Dev

Scala - 方法类型参数

来自分类Dev

检查Scala变量类型的最佳方法是什么?

来自分类Dev

Scala中方法类型中的“:”是什么意思?

来自分类Dev

AutoFac无法按类型正确解析

来自分类Dev

Scala-解析模板类型

来自分类Dev

较高种类类型的flatMap返回类型被解析为基础Iterable,而不是较高种类类型本身

来自分类Dev

为什么我不能在Option上调用flatMap [列表]

来自分类Dev

Scala中的flatMap实现

来自分类Dev

Scala中的FlatMap

来自分类Dev

奇怪的flatMap返回类型

来自分类Dev

是什么让Option在Scala中成为单子?

来自分类Dev

Scala Dependent类型无法编译

来自分类Dev

为什么此类型别名无法编译(Scala)

来自分类Dev

Scala 中类型投影的正确限制是什么?

来自分类Dev

Scala Option与C#可空类型相同吗?

来自分类Dev

在Scala中,如何为Future [Option [A]]进行类型转换?