[ruby-list:50480] [質問] define_method の使い方
From:
<yamataka@...08.itscom.net>
Date:
2017-02-03 09:12:07 UTC
List:
ruby-list #50480
山口と申します。
yama@roswell:/tmp$ ruby --version
ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-cygwin]
yama@roswelll:/tmp$ uname -a
CYGWIN_NT-6.1 JPC20316739 2.5.2(0.297/5/3) 2016-06-23 14:29 x86_64
Cygwin
の環境で、define_method を使い方で嵌っております。
class Tako
@api_name_list= Array['setPowerSettings','getStorageList']
@api_name_list.each do |apiname|
define_method(apiname){ puts "#{apiname}" }
end
end
Tako.new.setPowerSettings # => setPowerSettings
は、期待した動作をするのですが、
下記の様に、
@api_name_list を、initialize methodで設定すると、
class Ika
def initialize
@api_name_list = self.getSupportedApiInfo
end
@api_name_list.each do |apiname|
define_method(apiname){ puts "#{apiname}" }
end
def getSupportedApiInfo
Array['setPowerSettings','getStorageList']
end
end
Ika.new.setPowerSettings # ./tako.rb:15:in `<class:Ika>': undefined
method `each' for nil:NilClass (NoMethodError) from ./tako.rb:10:in `<
main>'
define_method する前に、そもそも、@api_name_list が nil だという事で、実
行時エラーになってしまいます。
この様な感じで、define_method で method 定義は出来ないのでしょうか?
ご教示お願いします。