問題タブ [class-eval]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - このルビーカスタムアクセサーはどのように機能しますか
したがって、以下のclass_evalのメソッドは、実行時に定義された属性のアクセサーを動的に作成します。たとえば、構成ファイルから読み取られた(実行時まで不明な)属性を持つ構成オブジェクトを作成するために使用できます。elseブランチを除いてすべて理解しています。私が正しければ、* valに渡された値が1つある場合、elseブランチは属性値(val [0])を返します。ただし、その記述方法では、* varに渡された値が複数ある場合は配列(val)を返すと予想されます。特に、私が次のようなものを持っている場合:
次に、コードを読むことから私は期待し@value to be [=,5]
ます。ただし@value
、配列[=、5]ではなく5を返します。これはどのように可能ですか?
ruby - class_evalの使用法を理解しようとしています
私はrails-settingsgemを使用しており、ActiveRecordクラスに関数を追加する方法を理解しようとしています(カードゲーム用に独自のライブラリを構築しています)。このgemがメタプログラミングの1つを使用していることに気付きました。 ActiveRecord :: Baseクラスに関数を追加するためのテクニック(私はrubyのメタプログラミングマスターからはほど遠いですが、それを学ぼうとしています)
私が理解していないのは、彼がActiveRecord :: Baseでclass_evalを使用する理由ですが、ActiveRecord :: Baseクラスを開いて関数を定義するだけの方が簡単ではなかったのでしょうか?特に、ブロックには動的なものは何もありません(動的とは、変数を含む文字列に対してclass_evalまたはinstance_evalを実行する場合です)
このようなもの:
2番目のclass_eval(def設定の前)は、「has_settings」が正しいすべてのクラスでその場で関数を定義することであることを理解していますか?ここで同じ質問ですが、彼は「class_eval....defsettings」の代わりに「defself.settings」を使用できると思います。
ruby - class_evalとclass<<classNameの違いは何ですか?
私はRubyスターターです。これらは両方とも(出力で)非常に似ていることがわかりましたが、以下のコンテキストでの違いを理解できませんでした。たとえば、私はクラスを持っています
このように拡張できます
そしてまたこのように
<<
いつ、いつ使用する必要がありclass_eval
ますか?
ruby - テストのために一時的に「class_eval」を行うにはどうすればよいですか?
テストのために特定のメソッドをクラスに一時的に適用することはできますか? 適用する多くの方法に応じて仕様を実行できるようにしたいと考えています。さまざまな設定で多数のフィクスチャを作成することもできますclass_eval
が、テストでモデルだけを作成する方が簡単であることがわかりました。例えば:
次に、別のコンテキスト ブロックで:
しかし、最後のコンテキスト ブロックの問題は、クラスが変更されていることです (上記のコンテキスト ブロックで変更されています)。後にクラスをリセットすることは可能class_eval
ですか? どのように?
ありがとう!
ruby - Ruby1.9.2class_eval変数
配列をソースとして許可するSettingslogicフォークでは、ruby 1.8.7ではすべてが機能していますが、ruby1.9.2ではエラーが発生します。問題はコードのこの部分にあります:
#{}が奇妙な方法で評価されているように見えます。「#{@ section}」は文字列ではなく、配列のようです。誰かがこれを説明できますか?
エラートレース:
助けてくれてありがとう
ruby - class_evalの問題Ruby
呼び出されるメソッドが「plus」で始まる場合、class_evalを使用してメタプログラムでメソッドを作成しようとしています。ただし、class_evalの実際の構文をまとめるのに問題があります
plus10(または任意の数値)が呼び出されると、新しく作成されたメソッドは、呼び出されている整数にその数値を追加し、新しい合計を生成する必要があります。
ありがとう
ruby-on-rails - Ruby/Rails: class_eval はこのコードを評価したくない
Omniauth のモックを生成するために、このメソッドをconfig/environments/development.rb
次に、同じファイルを呼び出します。
しかし、私は得る:
ruby - 継承されたクラスの ruby method_alias
ruby のメタプログラミングについて深く掘り下げていて、次の質問があります。例:
そのため、mixin を 2 回使用するとエラーが発生します。そのようなものを修正する最良の方法は何ですか? 混合が存在することを確認し、新しい混合の前にそれを削除する方法
ruby - 「class_eval」文字列内の変数スコープは何ですか?
class_eval
現在のクラスのコンテキストで実行されるコードを記述するために使用しています。次のコードでは、属性値の変更に対するカウンターを追加します。
私の理解では、ランタイム クラスのコンテキストでclass_eval
ブロックが評価されるということです。私の場合は、. 上記のコードは次のように実行されると思います。class Foo
ただし、上記のコードは、エラーが原因であるというエラーが発生しました@count += 1
。なぜスーパー@count
になっているのかわかりませんか?nil:NilClass
一方、@selman は@count
インスタンス メソッド内に代入を配置するソリューションを提供しており、それは機能します。
変数スコープの変更が機能するのはなぜですか? 次の文字列をどのようにclass_eval
実行しますか?
ruby - Ruby - class_eval を使用してメソッドを定義する
私は SaaS スタンフォード クラスを行っており、この課題のパート 5 を実行しようとしています。
私はこの概念を理解するのに本当に苦労しています。これは私がやろうとしたことです:
私はおそらくあらゆる種類の間違ったことをしています.The Book Of Rubyのメタプログラミングに関する章を読んでも、まだ理解できません.誰かがこれを理解するのを手伝ってくれますか?