D编程语言至少有两个以“@”符号为前缀的属性:
@disable
@property
“@”应该传达什么样的含义?我似乎无法在文档中找到任何相关内容。
另外,为什么__gshared
是唯一具有两个前导下划线的属性?
答案 0 :(得分:3)
没有任何意义。
是的,这可能不是你希望听到的 - 但这就是他们在新闻组中所说的。
答案 1 :(得分:2)
@
在这一点上并没有任何意义。所有@x
个单词都是函数属性。 @
仅用于保存关键字。所以,一般来说,较新的属性对它们有@
而较旧的属性则没有(尽管在一段时间内有一些混乱,在某些争论中是否有一些属性应该有{{1} } 或不)。如果他们从头开始重做而不关心其他语言做了什么,那么你可能已经获得@
所有的函数属性,但是@
之类的东西无法发生,因为它只会使移植代码更难以获得真正的好处。最终的结果是得到@public
和没有得到的是相当随意的。您只需要记住哪些属性以@
开头,哪些属性没有,但与必须学习新关键字的差别不大。只是这些都以@
为前缀,因此它们实际上不是关键字,也不会减少该语言中合法标识符的数量。
现在,D社区中的许多人肯定希望将来使用@
作为自定义属性,在这种情况下,@
会在使用名称的情况下指示自定义属性不是语言中内置的语言,但对于语言中内置的所有内容,它几乎等同于保存关键字。
答案 2 :(得分:0)
正如Mehrdad所示(参见评论中的链接),“@”没有特别的意义,它们只是出于历史原因。
至于您的其他问题,__gshared
不是唯一包含两个下划线的关键字,还有__thread
和__traits
。这种命名约定通常用于表示内部数据结构,这些内部数据结构由于实际原因需要公开,但在所有情况下都不能“安全”使用(即,更多的是黑客而不是完善的功能)。我不确定D语言是否遵循这个约定,但是从文档中看到this quote我认为是这样的:
__ gshared在安全模式下不被允许。
我正在搜索有关__thread
和__traits
(确实不是属性)的更多信息,但到目前为止可能找不到。