本地函数访问具有相同名称的父variables
这更像是我在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?
从bytecode
的角度来看,这是可能的,因为outerFunction
的variables只是localFunction
内部类中的字段(在字节码中),它们是可访问的。
// decompiled localFunction implements Function1 { final /* synthetic */ int $b; public final void invoke(int a) { System.out.print(a); int n = this.$b; System.out.print(n); } ... }
幸运的是,kotlin不支持这个,因为这会给程序员带来模棱两可的错误。
因此,避免在外部范围的某个地方使用相同的名称