尝试在for-yield中的“if”之后应用语句时出错。不知道为什么,我在其他地方也看到过类似的例子

value map is not a member of Long
      c <- f3

尝试编译此代码时
def f1() : Try[A]
def f2() : Try[B]
def f3() : Long

val result = for {
              a <- f1
              b <- f2
              if b.status == successcode
              c <- f3 // apply once a and b succeeded, returns a Long , unused result , tried without c<- and directly just f3 but similar syntax error
            } yield a

最佳答案

<-语法用于在某种类型的集合上进行map,但是f3不返回集合。 f3只是返回一个值,因此请使用=将此值分配给结果:

val result = for {
          a <- f1
          b <- f2
          if b.status == successcode
          c = f3
        } yield a

关于scala - 使用if语句进行理解的scala导致无法理解的编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59717351/

10-10 21:47