問題タブ [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 - デフォルトのRubyアクセサメソッド?
アクセサー (Ruby のようなプロパティ) が終了しない場合に呼び出される Ruby クラスに追加できる、デフォルトのメソッドまたはクラス アクセサーはありますか? 次に、データベースから読み取った配列リストのように応答するカスタム コードを記述できます。このコードでは、アクセサー コードを記述しなくても、アクセサーのように値にアクセスできます (データベースから読み取った場合は不明であるため)。
Ruby MRI 1.9 の使用
ありがとうございました!
ruby - 「Ruby のプログラミング」の method_missing が頭に浮かぶ
method_missing
*obj.method_missing( シンボル h ,引数 i ) → other_obj
obj が処理できないメッセージを送信されたときに、Ruby によって呼び出されます。symbol は呼び出されたメソッドのシンボルで、args はそれに渡された任意の引数です。以下の例では、ローマ数字で構成される名前のメソッドに応答し、対応する整数値を返すクラス Roman を作成します。method_missing のより一般的な用途は、プロキシ、委任者、およびフォワーダーを実装することです。
メソッドの欠落について聞いたばかりで、Ruby のプログラミングで詳細を調べに行きましたが、本から引用した上記の説明は頭に浮かびません。誰でも簡単に説明できますか?より具体的には、メソッド欠落はインタープリターによってのみ使用されますか、それともプログラムで直接呼び出す必要がありますか (NASA のコードを書くのではなく、Web アプリを書いているだけだと仮定します)?
c# - C#4.0でのメソッド欠落の問題:動的vs RealProxy
誰かがdynamic
メソッド呼び出し(特にRuntimeBinderException
sを上げる予定の呼び出し)をインターセプトする方法を知っていRealProxy
ますか?私は例外をキャッチし、その上に「メソッドがありません」を実装することを望んでいましたが、インターセプターがルックインを取得する前にスローされたようです。
私のテストは次のようになります。
World
に実際に実装されていない場所DynamicObject
。IMethodReturnMessage.Exception
インターセプターは非常に単純です-私は次のようなものをチェックしRuntimeBinderException
て転送することを望んでいました:
残念ながら、インターセプターに表示されるのは、への呼び出しGetType
だけであり、存在しないWorld
メソッドではありません。
DynamicProxy
それが失敗した場合-.NET4.0で正常に実行されているバージョンがあるかどうかを誰かが知っていますが、それでも問題に対処できた可能性がありますか?
ruby - 代わりに、配列インデックスとしてアクセサーにアクセスする方法は?
、、、などのFoo
いくつかのメソッドを持つクラスがあります。button_0_0
button_0_1
button_0_2
button_1_0
次の構文を使用して、これらに代わりにアクセスできるようにしたいと思います。
@button
インスタンス変数を作成し、すべてのbutton_*
アクセサーを反復処理してそのように追加できることはわかっていますが、それは少し厄介なようで、実際には「ルビーな方法」ではありません。
この問題に対してもっと簡潔でRubyのような解決策があるかどうか疑問に思いました(多分method_missing
?を使用することによって)—これを行うためのより良い方法を誰かが知っていますか?
[]
(これは途中でわかりましたが、欠落しているメソッドで新しいメソッドを呼び出すため、角かっこで動かなくなります...)
.net - Boo でメソッド呼び出しをインターセプトするにはどうすればよいですか?
Ruby には がありmethod_missing
、Python には がありgetattr
ます。Boo は、メソッド呼び出しをインターセプトするために使用できるものを提供していますか?
ruby - define_method と method_missing に関する質問
このコードを機能させるにはどうすればよいですか?
アイデアは、Meta.a (定義された後) を持つことです。
その体で。しかし、これを実行した後、私の出力は次のとおりです。
[:do_call] は配列の一部ではありません!
更新:今はちょっとこのように働いています:
それでも、IRB セッションの抜粋を次に示します。
[~/コード] $ irb -r メタ
irb (メイン):001:0> Meta.a
がありません!
=> #
irb (メイン):002:0> Meta.a
['a'] の呼び出しを行っています
=>なし
irb (メイン):003:0> c = Meta.new
=> #
irb (メイン):004:0> ca
NoMethodError: 未定義のメソッド `a' #
irb (メイン):005:0> Meta.methods
=> ["inspect", "send", "pretty_inspect", "class_eval", "clone", "yaml_tag_read_class", > >"public_methods", "protected_instance_methods", " send"、"private_method_defined?"、"equal?"、"freeze"、"do_call"、"yaml_as"、"methods"、"instance_eval"、"to_yaml"、"display"、"dup"、"object_id"、"include ?"、"private_instance_methods"、"instance_variables"、"extend"、"protected_method_defined?"、"const_defined?"、"to_yaml_style"、"instance_of?"、"eql?"、"name"、"public_class_method"、"hash" , "id", "new", "singleton_methods", "yaml_tag_subclasses?", "pretty_print_cycle", "taint", "pretty_print_inspect", "frozen?", "instance_variable_get", "autoload","constants", "kind_of?", "to_yaml_properties", "to_a", "ancestors", "private_class_method", "const_missing", "type", "yaml_tag_class_name", "instance_method", "<", "protected_methods"," <=>", "instance_methods", "==", "method_missing", "method_defined?", "superclass", ">", "pretty_print", "===", "instance_variable_set", "const_get"," is_a?", "taguri", ">=", "respond_to?", "to_s", "<=", "module_eval", "class_variables", "allocate", "class", "taguri=","pretty_print_instance_variables", "tainted?", "public_instance_methods", "=~", "private_methods", "public_method_defined?", "autoload?","id ", "nil?", "untaint", "included_modules", "const_set", "a", "method"]
何が与えますか?'a' はクラス メソッドであり、新しい Meta オブジェクト (c) には渡されません。なんで?
erlang - Erlang と method_missing
私は Java と Ruby のバックグラウンドを持っていますが、Erlang に「method_missing」に相当するものがあるかどうか疑問に思っていました。私はドキュメントを見てきましたが、最も近いのはerl_evalとerl_parseの使用ですが、他に方法があるかどうか知りたいですか?
deployment - Microsoft Compact Framework 2.0 / 3.5のmscorlib.dllに展開した後、System.Threadingが見つかりませんでした
Windows Mobile 6で問題が発生しています。アプリを開発し、mscorlib.dllアセンブリにあるSystem.Threading名前空間にあるTimerクラスを使用しました。問題は、デバッグするとき、またはデバイス(HTC ELF0300)でVisual Studio 2008から適切なcabファイルを作成して展開するときは正常に実行されますが、クライアントがデバイス(HTC Tilt 2)に展開すると、TypeLoadExceptionが発生することです。 System.Threading.Timer.ring()、それをたくさんグーグルして、プロジェクトで参照したすべてのアセンブリをIL DASMとビジュアルスタジオのオブジェクトエクスプローラーで調べた後、キャブに追加されたmscorlib.dllを確認しました展開用のプロジェクトにSystem.Threading名前空間がなく、メインプロジェクトにあるmscorlib.dllで、オブジェクトエクスプローラーにSystem.Threading名前空間が表示されています。
しかし、cabファイルに存在するmscorlib.dllに名前空間がない場合、cabファイルが展開されてデバイス(HTC ELF0300)で正常に実行されるが、HTC Tilt2では実行されない場合は、まだ困惑していますか?cabファイルに適切なmscorlib.dllを追加するにはどうすればよいですか?
どんな助けでも大歓迎です。ありがとうございました。
ズネア・ミーニャス。 http://www.tkxel.com/
ruby - rake タスクに「method_missing」はありますか?
rake
私の Rakefile が特定の名前のタスクを見つけられない場合、欠落しているタスク名のファイルが存在する場合、特定のルールに従ってその名前で新しいタスクを作成したいと思います。しかし、そうでない場合は、デフォルトに戻したい (「タスク 'foo' のビルド方法がわからない!」)。
要するに、method_missing
レーキ用の はありますか?
ruby - スーパーを呼び出す必要がある複数のモジュールを使用して、Ruby で同じクラス メソッドをオーバーライドします。メソッド エイリアスを使用しますか、それとも他の巧妙なトリックを使用しますか?
状況は次のとおりです。
User モデルと、認証用の 2 つのモジュール (Oauth と Openid) があります。どちらも をオーバーライドActiveRecord#save
し、実装ロジックをかなり共有しています。
ユーザーがいつ Oauth と Openid を介してログインしようとしているかがわかりますが、どちらもオーバーライドされているため、モジュールの実装の 1 つを条件付きで呼び出すことができるようにsave
「最終的に」オーバーライドするにはどうすればよいでしょうか?save
これが私が説明しているものの基本構造です:
私はalias_method
so のように使用することを考えていましたが、1 つまたは 2 つの同様のモジュールがある可能性があるため、複雑になりすぎました。また、これらのsave_with_oauth
方法(上記)を使用してみましたが、ほとんど機能します。欠けている唯一のことは、ActiveRecord::Base#save
(スーパーメソッド) も呼び出す必要があることです。したがって、次のようになります。
しかし、Ruby でそれを行うことは許可されていません。
これに対する賢い解決策のアイデアはありますか?
それは何alias_method_chain
をするでしょうか?人々がそれは悪い考えだと言っているようだったので、私はそれを避けてきました.
(私が行くように物事を見つける):