問題タブ [method-missing]
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-on-rails - Rails にないメソッドの使用
いくつかの日付属性を持つモデルがあります。値を文字列として設定および取得できるようにしたいと思います。メソッドの 1 つ (bill_date) を次のようにオーバーライドしました。
これは私のニーズには最適ですが、他のいくつかの日付属性についても同じことをしたいです...メソッドが見つからないことを利用して、日付属性を設定/取得できるようにするにはどうすればよいですか?
ruby - Ruby:putsがto_aryを呼び出すのはなぜですか?
私はRubyでメタプログラミングを学んでおり、method_missingとdefine_methodを介して欠落しているメソッドを定義しようとしています。予期しない動作が発生しているので、誰かがこれを説明できるかどうか疑問に思っています。これが私のクラスです:
さて、このコード:
出力を生成します:
私が得られないのは最後の部分です:なぜRubyはputsの呼び出しでto_aryを呼び出すのですか?Rubyがオブジェクトを印刷するためだけに配列に変換しようとするのはなぜですか?
私はグーグルで調べて、これらの関連リンクを見つけました:
- http://tenderlovemaking.com/2011/06/28/til-its-ok-to-return-nil-from-to_ary/
- http://yehudakatz.com/2010/01/02/the-craziest-fing-bug-ive-ever-seen/
これらはmethod_missingとto_aryの落とし穴についても話しますが、putsがto_aryを呼び出す理由については特に話しません。
また、to_sを定義しても、動作は変わらないことにも言及する必要があります。
「putsx」の出力は次のようになります。
ruby - Irb 1.9.3 で method_missing から「スタック レベルが深すぎます」と表示されるのはなぜですか?
シナリオ:
irbrc の読み込みを避けるために -f を付けて実行しました。入力すると nil になると予想していますa
。何が起こっているのか、回避策はありますか? /ブロックでラップしようとa
しましたが、何もしませんでした。begin
rescue Exception
これは 1.9.2 でも発生しますが、1.9.1 では発生しません。
さらに奇妙な動作:
これは、irb にバグがあること、または ruby のあいまいなバグが irb によって引き起こされていることを示しています。また、method_missing を定義した後は、同様のメソッドが存在するlocal_variables
かeval
、エラーが発生します。
ruby - Ruby-method_missing
$を他の通貨に変換するためのmethod_missingを実装しようとしています。たとえば、5.dollarsは5を生成し、5.yenは0.0655.euro6.56を生成します。これは私が今できることです。今、私はそれを実装する必要がありますが、例えば5.dollars.in(:yen)を実行します。
これは私が今持っているものです:
誰かが私がこれを行う方法を説明できますか?
PS:コードではなく説明を教えてほしいので、それがどのように行われるかを自分で判断できます。
ruby - Ruby - ArgumentError: 引数の数が間違っています (1 に対して 2)
私は次のクラスを上書きしています:
たとえば、 in の引数が複数形の場合は常に、10.dollars.in(:yens)
取得しますArgumentError: wrong number of arguments (2 for 1)
が10.dollars.in(:yen)
エラーは発生しません。理由はありますか?
ruby - 配列、ハッシュ、範囲の単一のmethod_missing
私はRubyを初めて使用します。すべての範囲、配列、ハッシュ、つまりすべての列挙型に対して機能するmethod_missingを使用して単一の「defArray / Range / Hash」を作成する方法はありますか?たとえば、次のように機能するはずです。
Sum()は、method_missing内で定義されたカスタムメソッドです。今のところ、Array、Range、Hashのmethod_missingを別々に処理する3つの異なる関数を作成しました。
ruby-on-rails - Object.respond_to? stuck in infinite loop
I'm building a Rails 3 gem that essentially modifies the records returned from an ActiveRecord query. One of the things I'm doing is overriding the method_missing
and respond_to?
methods, but it seems that my respond_to?
definition is resulting in an infinite loop that is throwing a "SystemStackError: stack level too deep" error.
Here are my original definitions of these methods:
In trying to learn why this infinite loop was occurring, I restructured respond_to?
with some "before" and "after" output to see where it's getting stuck.
When running, it appears that various callbacks and attribute methods run as expected, with a single before and after call for each:
However, any time I see a find callback, that appears to be caught in an infinite loop:
If I hack my respond_to?
, then everything appears to run smoothly:
What am I doing wrong that I seem to need this hack? And how can I avoid it?
smalltalk - smalltalk で nil を再定義して、任意のメッセージに応答する
smalltalk のnilを object -cのように再定義したいと思います。nilが処理できないメッセージを受け取ると、nilを返します。nil
これは単なるショートカットであることはわかっていますが、RubyUndefinedObject
のようなものがあるので、常にnilを返すように再定義できますか?method_missing
UndefinedObject
ruby-on-rails - RailsMethod_missingはハッシュから値をスローバックします
method_missingメソッドを作成しようとしているので、メソッドを実行するときに、値を返すための一致が見つかった場合は、ハッシュをヒットしてキーを確認する必要があります。続行します。ハッシュは私が書いたSQLクエリから入力されるので、値は決して一定ではありません。
例は次のようになります
ハッシュで
したがって、@ month_idは1を返します。私はこれまでこれを使用したことがなく、メソッドが欠落しているフォールバックとしてハッシュを使用している資料はあまりありません。
編集:申し訳ありませんが、ハッシュ内にメソッドが見つからない場合は、メソッドエラーが発生しないまで続行できます。
編集:申し分なく、私はハッキングしていたので、これは私が思いついたものです
もっと良い方法はありますか?
ruby-on-rails - モデルの method_missing からセッションにアクセスする最良の方法
モデルがセッション データを認識してはならないことはわかっていますが、モデルで定義されている method_missing の小さな状態情報にアクセスする必要があります。method_missing によってキャッチされたメソッドは、フォーム ヘルパーによって呼び出されます。
ここで、'new_display_name' は、多態的な関連付けを通じて定義されたカスタム プロパティ キーです。method_missing.
何か案は?私は Thread.current を調べましたが、現時点ではそれを使用する傾向があります。