我认为影子变量太危险了,不应该使用它们。为什么Scala支持这种语言结构?必须有一些强烈的原因,但我找不到。
我认为影子变量太危险了,不应该使用它们。为什么Scala支持这种语言结构?必须有一些强烈的原因,但我找不到。
我认为使用影子变量太危险了。
你有权利持有任何想法。然而,由于你没有提供任何数据、研究或甚至理由,所以那个意见毫无价值。
为什么Scala支持这种语言结构?
因为它是有用的。程序员不需要发明任意标识符名称,只因为一些作用域内的标识符已经在使用中。
它还使通配符导入更加有用,因为它消除了编译故障的可能性,只因为第三方添加了一个您正在使用的标识符。
应该有一些强有力的理由才对,但我找不到。
为什么必须有充足的理由呢?它有优点,在没有缺点的情况下(你没有提出任何),这就足够了。
编辑
回答中解释的缺点问题,我必须说这是一种特殊情况的遮蔽。遮蔽还会影响到所有导入,无论是通过import
语句还是嵌套的package
语句,以及在同一包中的所有内容。
让我们来看一些例子:
// Not allowed, because it shadows List
import java.util._
class A {
// Not allowed, because it shadows this, hashCode, equals, toString
class B
}
那会变成一门非常烦人的语言。