有没有办法改变Scala的_root_命名空间“关键字”?
问题描述:
至于我_root_
关键字看起来尴尬。它看起来像Python风格或黑客。有没有办法改变Scala的_root_命名空间“关键字”?
_root_.launch.Booster3
我想可以把它用语言建筑师改成像这样
_.launch.Booster3
,也可以像C#风格使用全局::
global::launch.Booster3
http://msdn.microsoft.com/en-us/library/cc713620.aspx
或
root.launch.Booster3
其中“根”将被视为关键字。
答
_
是一个不好的选择,因为它是一个“任何适合”的占位符,而_root_
是什么,但任何适合。
root
是一个不错的选择,因为人们已经推测使用了root
- 添加新的关键字可能会造成很大的破坏性。由于_
在所有类型的名字是不鼓励的,挑选_
具有特殊含义的标识符是人们可以做的最安全的事情之一。
global::
是一个不好的选择,因为global
和::
是不是保留关键字的独立标识符。它看起来像是试图将全局项目预先添加到包含其他包名称的列表中。在斯卡拉,::
是列表串联(cons);在名称空间中找到它要比找到一个完全有效的标识符(如_root_
)稍微不寻常。
我同意_root_
看起来很尴尬(尽管注意它只应该出现在你的软件包层次结构有名称冲突的尴尬情况下)。但是这样的事情有很好的理由,而且现在已经完成了,需要一个非常非常有说服力的理由来改变它。
但是C#的方式:global :: launch.Booster3? – user4298319
@ serg.f - 增加了一个关于'global ::'的段落。 –
感谢您的回答。 – user4298319