当我尝试运行以下代码时:
val anonFunc = (x: Pos): List[Pos] => {for(i <- 1 to 10){ println(i)}
我收到以下错误:
illegal start of declaration
我不明白为什么。 此代码在函数
中使用答案 0 :(得分:2)
(1)我知道两种确保匿名函数返回类型的方法:
val f = (x: Int) => { x + 1 }: Double
val f: Int => Double = x => x + 1
(2)for
理解将在撰写时Unit
返回List[Pos]
,而不是yield
。要返回真实内容,您需要使用val anonFunc = (x: Pos) => { for(i <- 1 to 10) yield(x) }: List[Pos]
:
List
但是当你这样做时,你会注意到编译器不喜欢for
作为返回类型,因为IndexedSeq
返回的是List
,而不是val anonFunc = (x: Pos) => { for(i <- 1 to 10) yield(x) }.toList: List[Pos]
。所以你需要明确地转换它:
saveAsNewAPIHadoopFile