我想遍历一个字串的数组并将它们变成一个类的实例。事情是这样的:如何动态定义局部变量
names_array = ["jack", "james","jim"]
names_array.each { |name| name = Person.new }
我使用eval像(names_array.each { |name| eval(name) = Person.new }
试过),但这似乎并没有工作。无论如何在Ruby中这样做?
编辑 上面的例子对我真正想要做的事情有点偏离,这是我的精巧代码。
students = ["Alex","Penelope" ,"Peter","Leighton","Jacob"]
students_hash = Hash.new {|hash, key| key = { :name => key, :scores => Array.new(5){|index| index = (1..100).to_a.sample} } }
students.map! {|student| students_hash[student]}
在哪里我的问题是
students.each {|student_hash| eval(student_hash[:name].downcase) = Student.new(students_hash)}
你打算如何再次从本地变量接收学生?听起来像[xy问题](http://meta.stackexchange.com/a/66378)给我。 – spickermann 2015-02-09 05:45:42
@spickermann:他会问的下一件事是如何获得数组/散列中的所有局部变量:) – 2015-02-09 05:52:00
我第二@spickermann:你为什么要这样做?你希望达到什么目的? – 2015-02-09 05:55:49