問題タブ [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.
ruby - Rubyはinstance_eval()で定義されたメソッドをどこに保存しますか
次に例を示します。
MyClass のインスタンス メソッドには「hello」メソッドが含まれていないため、私の質問は、Ruby が instance_eval() で定義されたメソッドをどこに格納するかです。
ruby - instance_evalはatt_accessorでは機能しませんか?
誰かが私に言うことができます、なぜそれが機能しないのですか?
私がしているのは何が悪いのですか?
ruby - class_evalとinstance_eval
class_eval
方法とinstance_eval
動作に違いはありますdef
か?Insideclass_eval
ブロックdef
は、それ自体をクラス化するメソッド(つまり、インスタンスメソッド)をinstance_eval
def
定義し、insideは、クラスの固有クラス(つまり、クラスメソッド)にメソッドを定義します。AFAIKの他のすべての機能は、どちらの場合も同じように機能します(たとえば、、、、define_method
定数attr_accessor
のclass << self; end
定義)。それは本当ですか?
答えは:def
、undef
であり、とalias
のコンテキストが異なります。class_eval
instance_eval
ruby - 限定されたスコープの組み込みルビークラスにモンキーパッチを適用
私は内部RubyDSLに取り組んでおり、それをできるだけきれいに見せるために、Symbolクラスにモンキーパッチを適用し、いくつかの演算子を追加する必要があります。私はこれをどのように行うかについて責任を持ち、パッチの範囲と存続期間を特定のコードブロックに制限したいと思います。これを行うための標準的なパターンはありますか?これが私が考えていることを示すためのいくつかの擬似コードです:
終わり
ruby - Instance_eval ブロックが提供されていませんか?
このエラーの原因を知っている人はいますか? 基本的なラック アプリケーションを作成しようとしています。
App.rb =>
Config.ru =>
編集:どうやら、エラー woops を含めるのを忘れていたようです:
/local/www/cherry/lib/app.rb:12:in 'instance_eval': block not supplied (ArgumentError)
ruby - クラスインスタンス変数の attr_accessor の定義 - Ruby
クラス インスタンス変数のアクセサを作成しようとしています。attr_accessor
クラスに含まれているモジュールからメソッドを呼び出しています。以下のコードを参照してください。
上記のコードは機能します。ただし、を呼び出すコードを次のように変更すると、次のattr_accessor
ようになります。
私は得るNoMethodError: undefined method `persistent_data='
両方の方法が同じように機能するべきではありませんか、それとも私の理解が間違っていますか? REE 1.8.7 を使用しています
ruby - instance_eval が特別な方法でダイレクト アクセサーを処理するのはなぜですか?
次のコードでエラーが発生しないのはなぜですか。
次の例では、予想どおり NameError が発生します。
これでもエラーが発生します。
1.8.7-p352 と 1.9.3-p194 でこれを試しましたが、同じ結果が得られました。
ruby - attr_accessorを持つクラスのRubyinstance_eval
との基本的な違いを理解していinstance_eval
ますclass_eval
。遊んでいるときに私が発見したのは、何か奇妙なことattr_accessor
です。次に例を示します。
どうですか:
- instance_evalは、アクセサでAクラス(オブジェクト)にアクセスしませんでした
- それから実際にそれをAのインスタンスに追加しましたか?
ruby - メソッドを instance_eval に渡すには?
instance_eval
このクラスを呼び出したい:
このメソッドを渡すb
:
しかし、これは起こっています:
b
ブロックの場合は機能しますがb
、メソッドとしては機能しません。どうすればそれを機能させることができますか?
ruby - module_eval / class_eval / instance_eval はどのように行番号を数えますか
に渡された line_number が見つかりましたがclass_eval
、エラーによって報告された行番号と一致module_eval
しinstance_eval
ません。この動作は、次のように言うruby-docでは説明されていません : (instance_eval
例として使用)
オプションの 2 番目と 3 番目のパラメーターは、コンパイル エラーを報告するときに使用されるファイル名と開始行番号を指定します。
これら 3 つのメソッドclass_eval
はすべて、ファイル名を指定する 2 つの追加のパラメーターmodule_eval
をinstance_eval
受け入れ、エラー メッセージのテキストを設定する lineno パラメーターを指定します。
この質問には、この動作の実用的なデモがあります。
ただし、行番号の計算は説明よりも複雑であることがわかりました。ここにデモがあります
上記のコードは、line_no
渡されたパラメータがinstance_eval
エラーによって報告された行番号ではなく、line_no
.
このパラメーターの正確な動作について疑問に思っていますか?