Swift 標準ライブラリ   >   Mirror   >   descendant(_:_:)


インスタンスプロパティー


descendant(_:_:)


反映された subject の特定の子孫を返すか、またはそのような子孫が存在しない場合は、 nil を返します。





宣言


func descendant(_ first: MirrorPath, _ rest: MirrorPath...) -> Any?


議論


String 引数は、一致するラベルを持つ最初の Child を選択します。整数の引数 nn 番目の 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 の構造を調べるのに適していますが、効率的であるとは考えられません。





目次
Xcode の新機能

  • 言語:Swift
  • 宣言
  • 議論












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)