[#50488] [質問] 正規表現の書き方 — AOKI Yoshihiro <ml-reader@...>

44GC44GK44GN44Go55Sz44GX44G+44GZ44CCDQoNCk1hYyBPUyAxMC4xMC41DQpydWJ5IDIuMy4x

12 messages 2017/02/21

[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 定義は出来ないのでしょうか?
ご教示お願いします。



In This Thread

Prev Next