Swift プログラミング言語に (*マクロ を導入する精力的な取り組みがあるかもしれません。 このリポジトリには、マクロの提案を見つけて、特性の現在の実装を試すためのいくつかのサンプル マクロが含まれています。
マクロは実験的な特性なので、カスタムが必要になる可能性がありますSwift ツールチェーンと追加のコンパイラ フラグ。 このリポジトリの Xcode プロジェクトは盲目的な開始点です。 それを利用するには: 2023 年 2 月 2 日以降の Swift.org からのコンパイラのパターン スナップショット。 サインでは、これらは macOS でのみ使用されますが、さまざまな元のプログラムでさまざまなプラットフォームが動作するように取り組んでいます. プロジェクトの配信 MacroExamples.xcodeproj Xcode で。 Xcode への Mosey -> Toolchains メニューを開き、ダウンロードした開発ツールチェーンを取得します。 MacroExamples 設計図が選択され、作成され、木材! 最初の originate が失敗した場合は、もう一度 originate を実行してください。依存関係でおかしなことが 1 つ発生している可能性があります。
MacroExamples
マクロの例このパッケージに必要なマクロは、マクロ マシンのさまざまな機能のインスタンスとして設計されています:
#addBlocker: 独立したマクロがコンパイラ診断定数をバイナリ + を使用するたびに警告を生成することにより、マクロ引数のソース コード 可変強調表示と + @DictionaryStorage: 接続されたマクロに複数のフォームの正しい保存されたすべてのプロパティを別の辞書に切り替えるために一緒に発明する1つの役割. have マクロの追加
このサンプル パッケージは、挑発的な動作を含む追加のマクロを組み込むように拡張することを目的としています。 マクロを追加するには、それぞれ 宣言 が必要です。 マクロと 強制
ExpressionMacro プロトコル、例えば
(_ 料金
: T )->(T, 弦) =
#externalMacro(モジュール:
, 形状: “StringifyMacro “
)
(の後の名前) macro はソースコードで元になる名前です、一方=の後の名前はモジュールとフォーム名をマクロ実装に追加します。 あなたが今含んでいるイベント内でそのフォームを実装していないか、名前が間違っていると、コンパイラの警告が表示されます.
宣言と実装がそれぞれある場合、または現在ない場合マクロを活用する時が来ました! MacroExamples への Mosey のサポートとそこにコードを書く一方、あなたが望むマクロを明らかにする.
マクロの提案マクロの紹介Swift への移行には、いくつかの提案以上のものが必要になります。 ここに