我只是对模式匹配及其相应的字节码进行了一些调查。
val a = Array(1,2,3,4)
a.map {
case i => i + 1
}
对于上面的代码,我使用 javap 并获得了 map 中匿名函数的字节码:
public int apply$mcII$sp(int);
Code:
0: iload_1
1: istore_2
2: iload_2
3: iconst_1
4: iadd
5: ireturn
所以在我看来,在第 0 行我们推送一个 int(参数),然后在第 1 行我们加载 int,在第 2 行我们将它推回......这里的目的是什么?
谢谢!