为什么有些语言,如 C++ 和 Python,即使不存在歧义,也需要指定对象的命名空间?我知道这有后门,比如using namespace x
在 C++ 或from x import *
Python 中。但是,当只有一个可访问的命名空间包含给定的标识符并且不存在歧义时,我无法理解不希望语言“做正确的事情”背后的理由。对我来说,这只是不必要的冗长和违反 DRY,因为你被迫指定编译器已经知道的东西。
例如:
import foo # Contains someFunction().
someFunction() # imported from foo. No ambiguity. Works.
比。
import foo # Contains someFunction()
import bar # Contains someFunction() also.
# foo.someFunction or bar.someFunction? Should be an error only because
# ambiguity exists.
someFunction()