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

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

ruby - デフォルトのRubyアクセサメソッド?

アクセサー (Ruby のようなプロパティ) が終了しない場合に呼び出される Ruby クラスに追加できる、デフォルトのメソッドまたはクラス アクセサーはありますか? 次に、データベースから読み取った配列リストのように応答するカスタム コードを記述できます。このコードでは、アクセサー コードを記述しなくても、アクセサーのように値にアクセスできます (データベースから読み取った場合は不明であるため)。

Ruby MRI 1.9 の使用

ありがとうございました!

0 投票する
7 に答える
2966 参照

ruby - 「Ruby のプログラミング」の method_missing が頭に浮かぶ

method_missing

*obj.method_missing( シンボル h ,引数 i ) → other_obj

obj が処理できないメッセージを送信されたときに、Ruby によって呼び出されます。symbol は呼び出されたメソッドのシンボルで、args はそれに渡された任意の引数です。以下の例では、ローマ数字で構成される名前のメソッドに応答し、対応する整数値を返すクラス Roman を作成します。method_missing のより一般的な用途は、プロキシ、委任者、およびフォワーダーを実装することです。

メソッドの欠落について聞いたばかりで、Ruby のプログラミングで詳細を調べに行きましたが、本から引用した上記の説明は頭に浮かびません。誰でも簡単に説明できますか?より具体的には、メソッド欠落はインタープリターによってのみ使用されますか、それともプログラムで直接呼び出す必要がありますか (NASA のコードを書くのではなく、Web アプリを書いているだけだと仮定します)?

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

c# - C#4.0でのメソッド欠落の問題:動的vs RealProxy

誰かがdynamicメソッド呼び出し(特にRuntimeBinderExceptionsを上げる予定の呼び出し)をインターセプトする方法を知っていRealProxyますか?私は例外をキャッチし、その上に「メソッドがありません」を実装することを望んでいましたが、インターセプターがルックインを取得する前にスローされたようです。

私のテストは次のようになります。

Worldに実際に実装されていない場所DynamicObjectIMethodReturnMessage.Exceptionインターセプターは非常に単純です-私は次のようなものをチェックしRuntimeBinderExceptionて転送することを望んでいました:

残念ながら、インターセプターに表示されるのは、への呼び出しGetTypeだけであり、存在しないWorldメソッドではありません。

DynamicProxyそれが失敗した場合-.NET4.0で正常に実行されているバージョンがあるかどうかを誰かが知っていますが、それでも問題に対処できた可能性がありますか?

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

ruby - 代わりに、配列インデックスとしてアクセサーにアクセスする方法は?

、、、などのFooいくつかのメソッドを持つクラスがあります。button_0_0button_0_1button_0_2button_1_0

次の構文を使用して、これらに代わりにアクセスできるようにしたいと思います。

@buttonインスタンス変数を作成し、すべてのbutton_*アクセサーを反復処理してそのように追加できることはわかっていますが、それは少し厄介なようで、実際には「ルビーな方法」ではありません。

この問題に対してもっと簡潔でRubyのような解決策があるかどうか疑問に思いました(多分method_missing?を使用することによって)—これを行うためのより良い方法を誰かが知っていますか?

[](これは途中でわかりましたが、欠落しているメソッドで新しいメソッドを呼び出すため、角かっこで動かなくなります...)

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

.net - Boo でメソッド呼び出しをインターセプトするにはどうすればよいですか?

Ruby には がありmethod_missing、Python には がありgetattrます。Boo は、メソッド呼び出しをインターセプトするために使用できるものを提供していますか?

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

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) には渡されません。なんで?

0 投票する
5 に答える
765 参照

erlang - Erlang と method_missing

私は Java と Ruby のバックグラウンドを持っていますが、Erlang に「method_missing」に相当するものがあるかどうか疑問に思っていました。私はドキュメントを見てきましたが、最も近いのはerl_evalとerl_parseの使用ですが、他に方法があるかどうか知りたいですか?

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

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/

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

ruby - rake タスクに「method_missing」はありますか?

rake私の Rakefile が特定の名前のタスクを見つけられない場合、欠落しているタスク名のファイルが存在する場合、特定のルールに従ってその名前で新しいタスクを作成したいと思います。しかし、そうでない場合は、デフォルトに戻したい (「タスク 'foo' のビルド方法がわからない!」)。

要するに、method_missingレーキ用の はありますか?

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

ruby - スーパーを呼び出す必要がある複数のモジュールを使用して、Ruby で同じクラス メソッドをオーバーライドします。メソッド エイリアスを使用しますか、それとも他の巧妙なトリックを使用しますか?

状況は次のとおりです。

User モデルと、認証用の 2 つのモジュール (Oauth と Openid) があります。どちらも をオーバーライドActiveRecord#saveし、実装ロジックをかなり共有しています。

ユーザーがいつ Oauth と Openid を介してログインしようとしているかがわかりますが、どちらもオーバーライドされているため、モジュールの実装の 1 つを条件付きで呼び出すことができるようにsave「最終的に」オーバーライドするにはどうすればよいでしょうか?save

これが私が説明しているものの基本構造です:

私はalias_methodso のように使用することを考えていましたが、1 つまたは 2 つの同様のモジュールがある可能性があるため、複雑になりすぎました。また、これらのsave_with_oauth方法(上記)を使用してみましたが、ほとんど機能します。欠けている唯一のことは、ActiveRecord::Base#save(スーパーメソッド) も呼び出す必要があることです。したがって、次のようになります。

しかし、Ruby でそれを行うことは許可されていません。

これに対する賢い解決策のアイデアはありますか?

それは何alias_method_chainをするでしょうか?人々がそれは悪い考えだと言っているようだったので、私はそれを避けてきました.

(私が行くように物事を見つける):