1

私はそのようなものを書きたいと思います:

class Test
  def initialize(a,b,c)
  end

  def print()
    puts @a
    puts @b
    puts @c
  end
end

Test.new({a=>1, b=>2, c=>3}).print()
=>1
=>2
=>3

オブジェクトをインスタンス化し、そのパラメータをハッシュ テーブルにマップする方法はありますか?

前もって感謝します。

4

3 に答える 3

4

まだ Ruby 1.9.3 を使用している場合は、Hash オブジェクトを非常に簡単に使用できます。

class Test
  attr_accessor :a, :b, :c

  def initialize(h)
     h.each {|k,v| send("#{k}=",v)}
  end

  def print()
    puts @a
    puts @b
    puts @c
  end
end

Test.new( {:a => 1, :b => 2, :c => 3}).print()
# 1
# 2
# 3
# => nil

aただし、キーとして渡したものと呼ばれる変数が作成されることに注意してください。それが一致しない場合bcアクセサーは失敗します。

于 2013-08-07T17:14:29.843 に答える