3

D 编程语言至少有两个以“@”符号为前缀的属性:

  • @disable
  • @property

“@”应该传达什么样的含义?我似乎无法在文档中找到任何相关内容。

另外,为什么__gshared唯一的属性有两个前导下划线?

4

3 回答 3

3

它没有任何意义。

是的,这可能不是您希望听到的——但这就是他们在新闻组中所说的。

于 2012-05-24T05:04:32.760 回答
2

在这一点上,这@并不意味着什么。所有的@x词都是功能属性。@几乎只是为了保存关键字。所以,一般来说,较新的属性@在它们身上有,而较旧的则没有(尽管前一段时间有一些洗牌,关于某些属性是否应该有一些争论@)。如果他们从头开始重做而不关心其他语言做了什么,那么你可能已经掌握@了所有的函数属性,但是这样的事情@public不可能发生,因为它只会让移植代码更加困难真正的好处。最终的结果是得到了什么@没有什么是相当随意的。您只需要记住哪些属性以哪些属性开头,@哪些不是,但这与必须学习新的关键字并没有太大的不同。只是这些带有前缀,@因此它们实际上不是关键字,并且不会减少语言中合法标识符的数量。

现在,D 社区中的许多人肯定希望@将来使用自定义属性,在这种情况下,@如果使用的名称不是语言内置的名称,而是用于所有那些内置在语言中的,它几乎相当于保存一个关键字。

于 2012-05-24T21:10:56.397 回答
0

正如 Mehrdad 所示(请参阅评论中的链接),“@”没有特殊含义,它们只是出于历史原因。

至于你的另一个问题,__gshared不是唯一带有两个下划线的关键字,还有__threadand __traits。此命名约定通常用于表示内部数据结构,出于实际原因需要公开这些数据结构,但并非在所有情况下都“安全”使用(即,与其说是成熟的功能,不如说是一种破解)。我不确定 D 语言是否遵循这个约定,但是从文档中看到这句话我相信是这样的:

__gshared 在安全模式下是不允许的。

我正在寻找更多关于__threadand的信息__traits(它们确实不是属性),但到目前为止发现的很少。

于 2012-05-24T05:05:33.653 回答