Dプログラミング言語には、接頭辞「@」記号が付いた少なくとも2つの属性があります。
@disable
@property
「@」はどのような意味を持っているのでしょうか?ドキュメントに関連するものが見つからないようです。
また、__gshared
2つの主要なアンダースコアを持つ唯一の属性はなぜですか?
意味がありません。
はい、それはおそらくあなたが聞きたいと思っていたものではありませんでした-しかしそれは彼らがニュースグループで言ったことです。
現時点では、これは実際には何の@
意味もありません。すべての@x
単語は関数属性です。は@
、キーワードを保存するためだけに取り組まれました。したがって、一般に、新しい属性には@
それらがあり、古い属性にはありません(ただし、しばらく前に、一部の属性に含めるべきかどうかについての議論があった場所で、いくつかのシャッフルがありました@
)。他の言語が行ったことを気にせずに最初からやり直した場合は@
、すべての関数属性を取得した可能性がありますが、@public
コードの移植が困難になるため、このようなことが起こることはありませんでした。本当のメリット。最終結果は、@
そして、そうでなかったことはかなり恣意的です。どの属性が始まり、どの属性が始まらないかを覚えておく必要がありますが@
、それは新しいキーワードを学ぶ必要があることとそれほど違いはありません。@
これらは実際にはキーワードではなく、言語内の有効な識別子の数を減らさないように、接頭辞が付けられているだけです。
現在、Dコミュニティの多くの人々の間@
で、将来的にカスタム属性に使用したいという願望が確実にあります。その場合、@
使用される名前が言語に組み込まれているのではなく、すべての場合にカスタム属性を示します。言語に組み込まれているものは、キーワードを保存することとほぼ同じです。
Mehrdadが示しているように(コメントのリンクを参照)、「@」には特別な意味はありません。これは、歴史的な理由からの意味です。
他の質問について__gshared
は、アンダースコアが2つあるキーワードは、とだけではありませ__thread
ん__traits
。この命名規則は、一般的に内部データ構造を示すために使用されます。内部データ構造は、実用上の理由で公開する必要がありますが、すべての場合に「安全」に使用できるわけではありません(つまり、確立された機能よりもハックです)。D言語がこの規則に従っているかどうかはわかりませんが、ドキュメントからこの引用を見ると、そうだと思います。
__gsharedはセーフモードでは許可されていません。
__thread
and (実際には属性ではありません)に関する詳細情報を探して__traits
いますが、これまでのところほとんど見つかりませんでした。