問題タブ [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 での method_missing の可視性
method_missing
Object.private_methods
ではなく に表示されObject.public_methods
ます。
ただし、呼び出すとObject.method_missing :stupidmethod
、
私は得ることを期待します
Object
の他のプライベートメソッドを呼び出そうとすると、それが得られるからObject.chop
です。
より多くの証拠としてObject.method_missing
、引数なしで呼び出すと、
そのため、オブジェクトの外部からその「プライベート」関数を実際に呼び出しているようです。method_missing
これを説明できますか?
編集: コメントで Eugene に感謝します。 ruby --version
1.8.7を教えてくれます。また、irb --version
0.9.5(05/04/13)です。これが後のバージョンで期待どおりに動作することを知っておくとよいでしょう。
ruby-on-rails - 'method_missing': 未定義のローカル変数またはメソッド 'has_ancestry'
ネストされたコメント用に Ancestry gem をセットアップする方法については、このチュートリアル ( http://www.tweetegy.com/2013/04/create-nested-comments-in-rails-using-ancestry-gem/ ) に従っています。通常の Rails アプリでチュートリアルを実行すると、問題なく動作します。私の問題は、コメントシステムをエンジンに分離しようとしたときに発生します。私が持っているモデルは次のとおりです。
エンジン内
メインアプリで
削除するhas_ancestry
と、コメントに問題なくアクセスできます。最初のアプリと同じようにチュートリアルに従いましたが、何らかの理由でこのアプリで Article.first.comments を実行すると、メソッドが見つからないというエラーが発生します。サポートのためにさらに情報を含める必要がある場合はお知らせください。ありがとうございました。
syntax - Ruby の method_missing を Lua で複製することは可能ですか?
__index
Lua では、特定のメタテーブルの、__newindex
、およびを使用して、 __call
Ruby の を大まかに複製できると確信していますmethod_missing
。そして、私は多少持っています:
私の問題は次のとおりです。構文は似ており、機能を複製するために使用できますが、破壊エラーが発生します。インデックス関数から実際の呼び出しへの潜在的な呼び出しのmethod_missing
ために呼び出すことができるオブジェクトを返す必要があるため、適用するテーブルのコンテキストで使用するすべての変数は決して nil ではありません。pass the buck
つまり、上記のようにグローバルな method_missing を定義した後、未定義のメソッド 'test_print' を呼び出そうとすると、期待どおりに実行されますが、インデックスが作成されたときの test_print の値は非 nil であり、応答されない他のメソッド/変数this_should_be_nil
は非 nil です。 .
では、この落とし穴を回避することは可能でしょうか? または、言語ソース自体を変更せずに、この変更をサポートするために構文を曲げることはできませんか? Ruby ではインデックス作成と呼び出しが類似しているのに対し、Lua ではそれらが異なるという点で困難が生じると思います。
ruby - Rubyのmethod_missingで&blockを実行する
ブロックとmethod_missing
Rubyクラスでの使用について学び始めたばかりで、一般的な式が
私の質問は&block
、出力で実行できるかどうかです。例えば:
ブロックが新しい配列を返すようにこれを機能させる方法はありますか?
ruby-on-rails - Rails メソッドが見つかりません - 「else」ケースのバックトレースを取得するにはどうすればよいですか?
別のクラスのインスタンスであるインスタンス変数を参照するモデルがあります。次のように、不足しているメソッドをその変数に委任したいと思います。
ただし、@other_class_instance が応答しない場合は、アプリを終了して、通常の NoMethodError と同じように完全なバックトレースを取得したいと考えています。代わりに、次のような 1 行のエラー メッセージが表示されます。
super がないと、Ruby のメソッド ルックアップが台無しになるということをいくつかの場所で読みました。
other_class_instance
メソッドに応答しない場合、method_missing
メソッドが作成されていないかのように動作するように、何が欠けていますか?
アップデート
ローガンの答えは、 OtherInstance クラスにもmethod_missing
定義されていないという条件の下で、この問題を処理します。その場合 (たとえば、Rails モデルの場合)、次のようなことができます。
java - 特定のクラスに一致するjarファイルを見つける方法
クラス「org.apache.xerces.impl.XMLDocumentFragmentScannerImpl」が見つからないというエラーが発生しました。これは新しいプロジェクトのセットアップであり、依存関係を管理するためにmavenやその他のツールを使用していません。いくつかのjarを含めるのを忘れたと思います.XMLDocumentFragmentScannerImplを所有しているjarを見つける方法は?