本地函数访问具有相同名称的父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不支持这个,因为这会给程序员带来模棱两可的错误。

因此,避免在外部范围的某个地方使用相同的名称