尝试在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/