問題タブ [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 - 関数が最初に呼び出されたときにのみ配列を初期化するにはどうすればよいですか?
配列内のすべての書き込みの履歴を記録するattrアクセサーを作成したいのですが、問題はclass_evalにあり、配列は毎回初期化されるため、古い値を保持しません。
どのような変更を行う必要がありますか?
ruby - Ruby でのクラスの拡張 (def と class_eval)
class_eval (コードに変換する文字列を取る) のように見えますが、新しい def メソッドでクラスを宣言することは、本質的に同じことです。
それらは本当に同等ですか?それぞれの長所と短所は何ですか?
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 - class-eval ブロック内の正規表現エラー
REST クライアントのラッパー クラスを介してリモート リソースと通信するための単純な定義から、モジュールにメソッドを追加するためのコードがいくつかあります。
コードを実行する前に、IRB にビルドしている gem を要求するだけで、次のエラーが発生します。
問題のある行は次のとおりです。
「#{uri}」引数を削除すると、「#{method}」引数を残しても修正されます。これがなぜなのかについての手がかりを持っている人はいますか?私はもう途方に暮れています。
ruby - Ruby メタプログラミング: @variables を既存の「initialize」メソッドに追加する (class_eval を使用)
重複の可能性:
Ruby.Metaprogramming. class_eval
私はこの小さなプロジェクトを持っています。目標は、作成された変数に割り当てられたすべての値の記録を保持する「attr_accessor_with_history」メソッドを作成することです。コードは次のとおりです。
ここで、1 つの変数についてスクリプトをテストします。それは正常に動作します。しかし、2 つ以上の変数を作成しようとすると (このように) ....
....Ruby は、「(class_eval) bar_history.push(new_value) に対して存在しない 'push' メソッド」を発行します。attr_accessor_with_history の 2 回目の呼び出しで「initialize」メソッドがオーバーライドされるため、最初の変数のレコードが破棄されると思います。
これを回避する方法がわかりません。私はすでに 'super' を呼び出してみました。どんな手掛かり ?
ruby - マップ演算子を含むこのRuby行を解読できません
私はruby-trelloでRubyコードのこの行を見たところです:
これは、次のように定義されたスーパークラスメソッドに関連しているようです。
class_evalがリフレクションに関連していることを理解しています。
誰かがサブクラスのコード行の目的を説明してもらえますか?
私の推測では、名前としてone
渡さ:member_creator
れるクラスメンバーと、引数として2つの末尾の引数を呼び出していると思いopts
ます。しかし、なぜこれがクラスレベルで呼び出されるのでしょうか。
ruby - class_evalに関するRubyの問題
私は以下を実行しようとしていますが、私は取得し続けます
"NoMethodError:#/ Foo:0x86f69ba/の未定義のメソッド`bar ='"
私は実際にこの投稿に似たものを使用しています:Ruby-class_evalを使用してメソッドを定義する
編集:あなたはまったく正しいです私はこれを反映するために変更を加えました..どうもありがとう。
ruby - class_eval を使用したメソッドの作成
1 つのパラメーターを取り、このパラメーターで名前を付けた別のメソッドを作成するメソッドを作成したいと考えています。これが私のコードです
残念ながら、 にrespond_to?(:foo)
評価されfalse
ます。どうしたの?
ruby - attr_accessorを持つクラスのRubyinstance_eval
との基本的な違いを理解していinstance_eval
ますclass_eval
。遊んでいるときに私が発見したのは、何か奇妙なことattr_accessor
です。次に例を示します。
どうですか:
- instance_evalは、アクセサでAクラス(オブジェクト)にアクセスしませんでした
- それから実際にそれをAのインスタンスに追加しましたか?