中缀符号有时在scala中不起作用,为什么会这样?

Ele*_*fee 1 scala list

好吧,所以我正在做一些测试来熟悉Scala,并且想看看我是否可以制作列表Java风格而不是你在Scala中做的奇特方式...

我知道你可以这样做:val lst = List.range(0, 100, 1)但我只想看看scala中的java风格

好吧,这就是我的所作所为:

var lst = List[Int]()

for(i <- 0 until 100) {
    lst = lst :: i // here's where it complains
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,scala,或者至少是eclipse的scala ide不喜欢我使用中缀符号附加,a-la lst :: i它希望我这样做:lst.::(i)否则它说::没有定义或什么,它不是第一个它发生的时间要么......

那么这里的任何人都可以解释它为什么这样做,或者它只是在eclipse中执行不良的情况,因此我必须忍受

Rex*_*err 7

中缀表示法不是问题.相反,这是因为方法名结尾:被应用为

a ??: b
b.??:(a)
Run Code Online (Sandbox Code Playgroud)

所以你只是向后反驳你的论点.

lst = i :: lst
Run Code Online (Sandbox Code Playgroud)

会很好的.

(当然,你有一个问题,列表就像堆栈一样,所以你需要按相反的顺序推送数字.)

  • 然后,您可以按相反的顺序执行此操作:`for(i < - (0到100)reverse)...`(反向是范围的常量时间操作)或使用ListBuffer作为@ alex23建议 (3认同)