D 编程语言至少有两个以“@”符号为前缀的属性:
@disable
@property
“@”应该传达什么样的含义?我似乎无法在文档中找到任何相关内容。
另外,为什么__gshared
唯一的属性有两个前导下划线?
它没有任何意义。
是的,这可能不是您希望听到的——但这就是他们在新闻组中所说的。
在这一点上,这@
并不意味着什么。所有的@x
词都是功能属性。@
几乎只是为了保存关键字。所以,一般来说,较新的属性@
在它们身上有,而较旧的则没有(尽管前一段时间有一些洗牌,关于某些属性是否应该有一些争论@
)。如果他们从头开始重做而不关心其他语言做了什么,那么你可能已经掌握@
了所有的函数属性,但是这样的事情@public
不可能发生,因为它只会让移植代码更加困难真正的好处。最终的结果是得到了什么@
没有什么是相当随意的。您只需要记住哪些属性以哪些属性开头,@
哪些不是,但这与必须学习新的关键字并没有太大的不同。只是这些带有前缀,@
因此它们实际上不是关键字,并且不会减少语言中合法标识符的数量。
现在,D 社区中的许多人肯定希望@
将来使用自定义属性,在这种情况下,@
如果使用的名称不是语言内置的名称,而是用于所有那些内置在语言中的,它几乎相当于保存一个关键字。
正如 Mehrdad 所示(请参阅评论中的链接),“@”没有特殊含义,它们只是出于历史原因。
至于你的另一个问题,__gshared
不是唯一带有两个下划线的关键字,还有__thread
and __traits
。此命名约定通常用于表示内部数据结构,出于实际原因需要公开这些数据结构,但并非在所有情况下都“安全”使用(即,与其说是成熟的功能,不如说是一种破解)。我不确定 D 语言是否遵循这个约定,但是从文档中看到这句话我相信是这样的:
__gshared 在安全模式下是不允许的。
我正在寻找更多关于__thread
and的信息__traits
(它们确实不是属性),但到目前为止发现的很少。