2017-01-24 2 views
9

objc_getClassListのようなものですが、構造体の場合。Swift-3ランタイムですべての構造体の型を取得する方法は?

コンテキストを与えるだけです:このメソッド(クラス用)は、単体テストで特定の接尾辞を持つすべてのクラスにテストがあることをテストするために使用されます。我々はテストをテストする!

+1

私が知る限り、構造体は実際には実行時に存在しません。それらは、一緒にグループ化された関連データをどのように処理するかをコンパイラに指示する単なる方法です。ほとんどの場合(つまり、プロトコル多型を使用しない場合)、メソッドは完全にインライン化されており、構造体のランタイム知識は必要ありません。 – Alexander

+0

@Alexanderとすべての構造体が単一のプロトコルに準拠しているかどうか?ある時点で 'Mirror(reflect:Protocol.self).children'を使用できるというヒントがありますが、現在のSwiftバージョンでは配列は空です。 http://stackoverflow.com/questions/35125708/how-to-list-swift-types-that-c​​onform-to-protocol-using-reflection –

+0

プロトコルもコンパイルできません。コンパイラーがプロトコルのすべてのメソッドを静的にディスパッチできる十分な情報を持っている場合、実行時にそれが存在する理由はありません。 – Alexander

答えて

1

Swiftコンパイラは、今日、この種のリフレクションを行うのに十分なメタデータを主に出力しますが、公開されません。完全な忠実度の反映は、「やりたいことのリスト」にありますが、まだ実装されていません。

関連する問題