2
class TestClass
  attr_accessor :name, :id
end


values = ["test1", "test2"]

mapped_values = values.map{|value|
  test_class = TestClass.new
  test_class.name = value
  test_class.id = #some random number
  return test_class
}

puts mapped_values

明らかにこれは機能しません。新しく構築されたリスト全体ではなく、最初の値を返すだけです。私が達成したかったこのテスト スクリプトは、Array.map 操作から値名と ID を含む TestClass のリストを返すことです。Rubyでそれを行うための最良の方法を見つけようとしています。

私はこのようなことをすることができます

tests = []

values.each do |value|
   test_class = TestClass.new
   test_class.name = value
   test_class.id = #some random number
   tests << test_class
end

これを行うためのより良い方法があるに違いないと思いますか?

4

1 に答える 1

3

map を使用する場合は、return 呼び出しを削除します。

mapped_values = values.map{|value|
  test_class = TestClass.new
  test_class.name = value
  test_class.id = #some random number
  test_class
}

渡されるブロックは Proc であり、Proc は明示的なリターン コールを許可しません。明示的なリターンが Proc に違いをもたらすのはなぜですか?を参照してください。詳細については

于 2013-03-20T10:11:51.493 に答える