我发现 Scala 总是对任何事情都有“自然的解释”。总是像“哦,但这只是在这个和那个对象上使用这个和那个参数调用的函数”。从某种意义上说,没有什么是真正的编译器魔法,正如我们从其他语言中所知道的那样。
我的问题是关于以下代码中使用的<-运算符:
for(i <- 0 to 10) println(i)
在这个例子中,我可以看到它被重写为:
0.to(10).foreach((i:Int)=>println(i))
但这并不能解释我是如何进入 foreach 函数内的匿名函数的。在您编写i时,它不是一个对象,也不是一个声明的变量。那么它是什么,它是如何被转移到 foreach 内部的呢?
我的猜测是我终于发现了一些实际上是编译器魔法的东西
谢谢你的时间。
为了澄清,我的问题是: <- 运算符如何在第一行代码中工作,因为 i 不是可以作为函数调用的对象。