5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby 初心者スレッド Part 37

110 :デフォルトの名無しさん:2010/05/24(月) 19:08:10
質問です。
Rubyでインスタンスメソッドがあるかないかを確かめる方法は以下の方法でよいものでしょうか?

Unkoクラスをインスタンス化した場合にseeds_of_watermelonメソッドがあるか確かめたい場合は

>> Unko.instance_methods.include? "seeds_of_watermelon"
=> true

でよいでしょうか?

define? Unko.seeds_of_watermelon
だと、クラスメソッドで判定されてしまいます。
もちろん define?をUnkoのインスタンスに使えばいいのですが、
その場合インスタンス化する前に知ることができません。


何でこんな疑問がうかんだかといいますと、Railsのプラグインがあるモデルに組み込まれているかどうかを確かめる方法が知りたかったのです。
例えばRailsでは大概プラグインは必要な時に自動でincludeされ、
モデルのクラス定義で acts_as_nantoka として実際のモデルごとに組み込むことがあります。

Ruby的(ダックタイピング的)には、acts_as_nantokaが呼ばれたか?というよりも
実際にメソッドがあるかないか?で判断した方がよいと思ったためです。

237 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)