diff --git a/language-reference/attributes.md b/language-reference/attributes.md index 266aac5f..f4e6054f 100644 --- a/language-reference/attributes.md +++ b/language-reference/attributes.md @@ -34,7 +34,7 @@ Swift には、宣言に適用される属性と型に適用される属性の 2 - アクセサマクロ(Accessor macros): この属性の第 1 引数としてアクセサを書く。このマクロを実装する型は `AccessorMacro` プロトコルに準拠する。これらのマクロは、マクロが添付されている格納プロパティにアクセサを追加し、それを計算プロパティに変換する - Extension マクロ(Extension macros): この属性の最初の引数として `extension` を書く。このマクロを実装した型は、`ExtensionMacro` プロトコルに準拠する。このマクロは、プロトコルへの準拠、`where` 句およびこのマクロが添付されている型のメンバとして新しい宣言を追加する。マクロがプロトコルへの準拠を追加する場合、`conformances:` 引数を加えて準拠するプロトコルを特定する。準拠リストにはプロトコル名、準拠リスト内の項目を参照するタイプエイリアス、あるいは準拠リスト内の項目のプロトコル合成が含まれる。入れ子になった型の extension マクロは、そのファイルのトップレベルの extension として展開される。extension、タイプエイリアス、関数の内部に入れ子になっている型に extension マクロを記述したり、ピアマクロを持つ extension を追加するために extension マクロを使用することはできない -ピアメンバおよびアクセサマクロには、マクロが生成するシンボルの名前を列挙した `names:` 引数が必要です。マクロが extension の内部に宣言を追加する場合、extension マクロにも `names:` 引数が必要です。マクロ宣言に `names:` 引数が含まれる場合、マクロの実装は、そのリストに一致する名前を持つシンボルだけを生成しなければなりません。とはいえ、マクロは列挙されたすべての名前に対してシンボルを生成する必要はありません。この引数の値は、下記の内の 1 つまたはそれ以上のリストです: +ピアおよびメンバマクロのロールには、マクロが生成するシンボルの名前を列挙した `names:` 引数が必要です。アクセサマクロのロールは、マクロが `willSet` または `didSet` プロパティオブザーバを生成する場合、`names:` 引数を必要とします。プロパティオブザーバを生成するアクセサマクロは、他のアクセサを追加できません。これは、オブザーバが格納プロパティにのみ適用されるためです。マクロが extension の内部に宣言を追加する場合、extension マクロのロールにも `names:` 引数が必要です。マクロ宣言に `names:` 引数が含まれる場合、マクロの実装は、そのリストに一致する名前を持つシンボルだけを生成しなければなりません。とはいえ、マクロは列挙されたすべての名前に対してシンボルを生成する必要はありません。この引数の値は、下記の内の 1 つまたはそれ以上のリストです: - `named(<#name#>)` あらかじめ分かっている名前に対して固定のシンボル名を付与する*名前* - `overloaded` 既存のシンボルと同じ名前に対して上書きする