我认为影子变量太危险而不能使用它们。为什么 Scala 支持这种语言结构?应该有一些强有力的理由,但我找不到它。
提醒一下:变量、方法或类型据说shadow当在内部作用域中声明另一个同名变量、方法或类型时,无法以非限定方式(或者有时根本无法)引用外部作用域实体。 Scala 与 Java 一样,允许阴影。
我看到的一个可能的原因是,在 Scala 中,经常有许多嵌套作用域,每个嵌套作用域都相对较短(与 Java 或 C++ 相比)。事实上,块可以在需要表达式的任何地方开始,从而开始一个新的作用域。因此,平均而言,在内部作用域中使用隐藏名称更接近其声明并且不那么模糊。
此外,内联闭包通常会导致程序员在已经拥挤的作用域中需要新的变量名称。允许遮蔽还允许继续使用足够切题的描述性名称,即使它们与所有已经使用的名称相同,而不是发明其他奇怪的名称 - 比如在它们前面加上前缀my
, local
,或者(更糟糕)_
或单字母名称...
对于好的 IDE 来说,影子不再是一个问题,例如:在源代码中突出显示光标下变量的声明和引用。
这里只是我的两分钱……
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)