-3

私はRubyが初めてで、ハッシュ引数を学んでいます。ハッシュ引数を使用した場合に値を返す方法について質問があります

次のコードのようなハッシュ引数を持つ test_method というメソッドを含む Test というクラスを作成します。

 class Test
     def test_method(names={})
       names[:firstname]
       names[:lastname]
       return names
     end
  end

そして、私はそれを次のように呼びます

    test = Test.new
    myname = test.test_method(firstname: 'Tester', lastname: 'Testing')

    puts myname

確かに、私が得た結果は " firstname Tester lastname Testing " です。

だから、私は他の方法を使用します。次のように、names[:firstname] names[:lastname] に対して 2 つのインスタンス変数 @firstname と @lastname を設定します。

def test_method(names={})
        @firstname = names[:firstname]
        @lastname = names[:lastname]
        return @firstname, @lastname
end

必要な結果を得ることができますが、引数が 10 個を超える場合は設定する必要がありますか? 結果を得るためのより良い方法があれば?

4

2 に答える 2

0

はい。すべてのハッシュ キーがインスタンス変数名に対応している場合は、キーと値のペアを単純にループして、次を使用できますinstance_variable_set

def test_method(names = {})
  names.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end
于 2013-08-29T03:28:25.847 に答える