問題タブ [instance-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.

0 投票する
1 に答える
48 参照

ruby - 2番目の「parg」がFooインスタンスを報告するのはなぜですか?

p arg2番目の' 'がFooインスタンスを報告するのはなぜですか?ブロックに譲らないnilので報告すべきではありませんか?with_instance_evalself

0 投票する
2 に答える
350 参照

ruby - ruby metaprogramming - yield block not working in dynamically added method

I'm working on extending the NotAMock framework for stubbing methods in rspec, and getting the stubs to yield to a methods block.

The code in this Gist works perfectly when I code it on my own (which is done-up to resemble how NotAMock stubs methods).

but when I incorporate the object.instance_eval... code into the NotAMock framework, the "block_given?" always returns false and I can never get my yield to work because of that. The method is added correctly, and I can call the stubbed method... but it will not recognize the block that i pass to the method, from the NotAMock stubbed version.

To see how i have incorporated this code into the NotAMock framework, go to my clone of NotAMock and check out the "add_hook" method in the private methods.

I know this is a bit much to ask... i'm hoping to find some guidance. it's been driving me nuts all day.

0 投票する
1 に答える
1839 参照

ruby - Ruby-ブロックをパラメータとして実際のブロックとして別の関数に渡すことは可能ですか?

これが私がやろうとしていることです:

「instance.instance_eval{block.call}」と書かれている行で、新しいインスタンス変数がブロック上でインスタンスを評価するようにする別の方法を見つけようとしています。それを実現するために私が考えることができる唯一の方法は、instance_evalを元のブロックに渡すことです。変数などとしてではなく、テスト例のように実際のブロックとして渡します。

任意のヒント?

0 投票する
2 に答える
1077 参照

ruby - Ruby: instance_eval/class_eval で定数ルックアップはどのように機能しますか?

私は Pickaxe 1.9 を使って作業を進めていますが、instance/class_eval ブロッ​​クの定数ルックアップに少し混乱しています。私は1.9.2を使用しています。

Ruby は *_eval ブロッ​​ク内の定数ルックアップをメソッド ルックアップと同じ方法で処理しているようです。

  1. receiver.singleton_class (および mixins) で定義を探します。
  2. 次に、receiver.singleton_class.superclass (および mixins) で。
  3. 次に、 に到達するまで固有連鎖を続けます#<Class:BasicObject>
  4. そのスーパークラスは Class です。
  5. そして、残りの先祖チェーン (Objectトップレベルで定義したすべての定数を格納する を含む) を上に移動し、途中で mixin をチェックします。

これは正しいです?つるはしの議論は少し簡潔です。

いくつかの例:

class_eval の例では、Foo-the-class は Foo-the-object の祖先チェーンに沿ったストップではありません!

ミックスインの例:

0 投票する
4 に答える
13632 参照

ruby - class_eval と instance_eval を使用して Ruby クラス変数にアクセスする

私は次のものを持っています:

以下が機能する理由:

しかし、私は@@b直接アクセスできませんか?

同様に、次の作品

しかし、以下は失敗します

instance_evalブロックからクラス変数に直接アクセスできない理由がわかりません。

0 投票する
1 に答える
373 参照

ruby - Ruby で instance_eval を介してブロックを呼び出すと、動的に追加されたアクセサーの割り当てが機能しない

実行時に属性アクセサーを動的に追加するクラスがあります。このクラスは DSL の一部を形成し、ブロックが構成メソッドに渡され、instance_eval を使用して呼び出されます。これにより、クラスのメソッドを参照するときに、DSL で「self」への参照を削除できます。

ただし、属性を参照してその値を取得することはできますが、次のコード サンプルに示すように、明示的に自分自身を参照しない限り、属性を割り当てることができないことがわかりました。

これが期待どおりに動作しない理由を誰か説明できますか?

0 投票する
1 に答える
507 参照

ruby - Ruby 1.9.2 で instance_eval はどこに定義されていますか?

私の無知を許してください、しかし、私はここで何かが欠けているに違いありません. クラスで ruby​​ 1.8.7のinstance_evalのドキュメントを見つけることができますが、 1.9.2Objectのどこにも見つかりません。私はそれを使用しているので、機能がまだサポートされていることを知っています. 移動先の秘密の親クラスはありますか?

0 投票する
1 に答える
233 参照

ruby - REPL または irb で Ruby DSL を再利用していますか?

jruby で UniVerse データベースのタスク用の単純な DSL を開発しました。こんな感じです

そして、このように実装されています

このようなRubyスクリプトでirbにドロップできることは承知しています

しかし、コマンド ラインにドロップして、デフォルトでオブジェクトのインスタンス メソッドを実行するようにスコープを変更する方法はありますか?

例えば

0 投票する
1 に答える
1355 参照

ruby - 引数付きの Ruby instance_exec / instance_eval

同じ文字列で指定されたパラメーターを使用して、文字列で指定されたメソッドを動的に呼び出そうとしていますが、パラメーターの提供に行き詰まっています...

私は現在持っています:

したがって、メソッド名は input(0) で、このメソッドへの引数は入力の残りの部分にあります。これらのパラメータでこのメソッドを呼び出す方法はありますか?

0 投票する
1 に答える
1366 参照

ruby-on-rails - Ruby/Rails: class_eval はこのコードを評価したくない

Omniauth のモックを生成するために、このメソッドをconfig/environments/development.rb

次に、同じファイルを呼び出します。

しかし、私は得る: