2

Tritium API Web サイトの例を見ていますが、yield() 関数の機能がわかりません。

http://tritium.io/simple-mobile/1.0.224#yield()%20テキスト

誰かがこれらの例を説明できますか?

# first example 
@func XMLNode.foo {
  $a = "dog"
  yield()
\  log($a)
 }
# second example 
foo() {
  $a = $a + "cat"
}
@func XMLNode.foo {
  $a = "dog"
  log($a)
  yield()
}
foo() {
  $a = $a + "cat"
}
4

1 に答える 1

4

このyield()関数を使用すると、関数呼び出しのスコープ内で追加の Tritium コードを記述できます。

たとえば、次のwrap()ように関数を使用できます。

wrap("div") {
  add_class("product")
}

この例では、wrap()関数は現在のノードを<div>タグ内で囲み、そのタグにクラス「product」を追加します。これにより、次の HTML が生成されます。

<div class="product">
  <!-- the node you originally selected is now wrapped inside here -->
</div>

への関数呼び出しは、関数のブロックadd_class()内で実行されています。関数定義は次のようになります。wrap()yield()wrap()

@func XMLNode.wrap(Text %tag) {
  %parent_node = this()
  insert_at(position("before"), %tag) {
    move(%parent_node, this(), position("top"))
    yield()
  }
}

ご覧のとおりyield()、関数定義 for 内の呼び出しwrap()により、Tritium コードはその実行を上で書いた関数に譲ります。add_class()

もう一度私の例を使用すると、コードのこのセクションは次のようになります。

wrap("div") {
  add_class("product")
}

まさに次のように記述します。

%parent_node = this()
insert_at(position("before"), "div") {
  move(%parent_node, this(), position("top"))
  add_class("product")  ## <-- This is where the code inside a yield() block gets added
}
于 2013-05-30T09:46:19.763 に答える