2013-05-15 14 views

答えて

14

は、

def self.attr_list 
[:x1, :y1, :x2, :y2] 
end 

attr_accessor *attr_list 

説明それを考え出した:

としてattr_accessorをパラメータリストを期待するメソッド呼び出しです。したがって、そのまま配列を渡すことはできません。 (*)は、配列をパラメータリストに変換します。

attr_accessorに渡される属性リストの配列を返すクラスメソッドを定義する必要があります。

attr_accessible(またはそれに類するもの)と同様に機能します。

+0

ありがとう –

0

受け入れソリューションは、ルビーの警告生成:

def attr_list 
    [:x1, :y1, :x2, :y2] 
end 

attr_list.each { |attr| attr_accessor attr } 

または

を '*' の代替はこのような何かをするだろう引数のプレフィックス

と解釈

ATTR_LIST = [:x1, :y1, :x2, :y2] 
ATTR_LIST.each { |attr| attr_accessor attr } 
2

警告を表示せずにこれを行う方法:

class MyClass 
    ATTR_LIST = [:x1, :y1, :x2, :y2] 
    attr_accessor(*ATTR_LIST) 
end 
関連する問題

 関連する問題