这更像是我在kotlin上发表的好奇心问题
我使用的是本地函数,它的父参数名称与参数名称相同。
看看这个例子:
fun outerFunction(a: Int, b:Int) {
fun localFunction(a: Int) {
print(a) //local a
print(b) //parent b
print(???) //parent a?
}
}
在本地函数内部,我打印本地a,父b,有没有办法打印父a?
答案 0 :(得分:0)
从bytecode
的角度来看,这是可能的,因为outerFunction
的变量只是localFunction
的内部类中的字段(在字节码中),他们是可以访问的。
// decompiled localFunction
implements Function1<Integer, Unit> {
final /* synthetic */ int $b;
public final void invoke(int a) {
System.out.print(a);
int n = this.$b;
System.out.print(n);
}
...
}
幸运的是,kotlin并不支持这一点,因为这会给程序员带来歧义并容易出错。
因此,请避免对已在外部范围
中使用的变量使用相同的名称