为什么Scala的transient不是关键字而是注解?

3

把它作为注释而不是内置关键字,这是一个有意识的设计决策吗?有什么优点?


3
从 http://www.scala-lang.org/old/node/106: 注解条款的含义取决于实现方式。在Java平台上,以下Scala注解具有标准含义。... Java是Scala的一个平台之一(或者这是最初的想法?)。这个问题可能被标记为离题。不确定将其标记为“维基”是否有帮助。 - Jayan
1
@Jayan没有提到为什么。它只是提到这些特定的注释在Java中是标准。编辑:我想实现依赖于另一种方式来说“没有记录的原因”,但这并不特定于为什么transient不是Scala中的关键字;我非常确定它是在提到注释的处理方式是依赖于实现的。 - Dioxin
1个回答

2

这些信息没有任何文档记录,所以除非您直接与作者交谈,否则您无法得到100%确定的答案。

我唯一能想到的合理原因是在语言规范中省略它的必要性。


这样做可以提供灵活性,以防需要更新关键字(或在本例中为注释)的含义,并且还提供向后兼容性。您只需添加一个新的注释并将旧的标记为已弃用即可。 - Dragonborn
@Dragonborn 没错;这也是为什么Java现在有一个forEach方法用于集合,以消除增强的for循环的需要。它还释放了名称以用作标识符,因为它不再是关键字。如果这让你感觉更好,我可以将此信息添加到答案中。 - Dioxin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接