Swift 標準ライブラリ   >   Mirror   >   descendant(_:_:)
インスタンスプロパティー
descendant(_:_:)
反映された subject の特定の子孫を返すか、またはそのような子孫が存在しない場合は、 nil を返します。
宣言
議論
String 引数は、一致するラベルを持つ最初の Child を選択します。整数の引数 n は n 番目の Childf を選択します。例えば:
var d = Mirror(reflecting: x).descendant(1, "two", 3)
は、以下に等しいです。
var d = nil let children = Mirror(reflecting: x).children if let p0 = children.index(children.startIndex, offsetBy: 1, limitedBy: children.endIndex) { let grandChildren = Mirror(reflecting: children[p0].value).children SeekTwo: for g in grandChildren { if g.label == "two" { let greatGrandChildren = Mirror(reflecting: g.value).children if let p1 = greatGrandChildren.index( greatGrandChildren.startIndex, offsetBy: 3, limitedBy: greatGrandChildren.endIndex) { d = greatGrandChildren[p1].value } break SeekTwo } } }
ご覧のように、引数リストの各要素の複雑さは、対応する subject の親の mirror を初期化するために使用されるコレクションの引数の型と機能によって異なります。各 String 引数は線形検索になります。要するに、この機能は REPL やプレイグラウンドで Mirror の構造を調べるのに適していますが、効率的であるとは考えられません。