私はRails docsを読んでいましたが、私は用語がmacros
に遭遇しました。 (Railsのコンテキストで)用語の定義が見つかりません。 誰かが、用語が定義されている場所に私を向けることができますか?Railsのマクロとは何ですか?
私は、「記録」アクション(マウス、OSのキーボード操作など)用のソフトウェアとして、別のコンテキストで用語に精通しています。 用語の使い分けには何か関係はありますか?
私はRails docsを読んでいましたが、私は用語がmacros
に遭遇しました。 (Railsのコンテキストで)用語の定義が見つかりません。 誰かが、用語が定義されている場所に私を向けることができますか?Railsのマクロとは何ですか?
私は、「記録」アクション(マウス、OSのキーボード操作など)用のソフトウェアとして、別のコンテキストで用語に精通しています。 用語の使い分けには何か関係はありますか?
マクロは、新しいインスタンスメソッドを作成するクラスメソッドです。スーパークラスにマクロを作成すると、そのサブクラスはすべてそのメソッドを呼び出して引数を渡し、カスタマイズされたインスタンスメソッドを1つ以上持つことができます。
Railsはこの技術を使用して、ほとんどコードを持たない多くの機能を提供します。例えば、has_manyやbelongs_toなどの関連付けメソッドは、関連オブジェクトを返すインスタンスメソッドを生成するためにマクロを使用します。
Rubyでは、マクロはdefine_methodメソッドを使用しています。これは、呼び出されると、現在のスコープでメソッドを定義します。引数には新しいメソッドの名前が入り、ブロックは新しいメソッドの内部に入るコードです。ブロックに渡されるパラメータは、新しいメソッドが取ることができる引数になります。例えば
は、ここでのハッシュ属性あなたはクラスの中にあなたがアクセスすることを可能にする方法や設定値を作成するマクロを作ることができる方法は次のとおりです。より明確にするため
def make_columns(columms)
columns.each do |col|
define_method("#{col}") do
attributes[col]
end
end
columns.each do |col|
define_method("#{col}=") do |value|
attributes(col) = value
end
end
end
は、このリンクを通過しますHow To Write "Macros" in Ruby
この文脈では、マクロは他のコードを生成するコードです。たとえば:
attr_accessor :foo
はこれを生成します。
def foo
@foo
end
def foo=(val)
@foo = val
end
は、用語の異なる用途間の任意の接続はありますか?
種類。 attr_accessor
の著者は、それをどのように展開すべきかを「記録した」と言うことができます。
"ruby macros"のようなものはありません。Rails世界のこれらのヒップスターはちょうど弱い名前です:-P – mudasobwa
@mudasobwa: "マクロ"の定義によります:) –
あなたが共有しているリンクは見つかりませんでした。 – blu
もう一度お試しください....申し訳ありません –