如何在普通ruby文件的主要绑定中定义变量?如何在主要动态创建局部变量
我已经试过TOPLEVEL_BINDING,但不要共享变量范围主要
#!/usr/bin/env ruby
# ....
5.times do |i|
src = %(
reader#{i} = library.create_reader "name"
book#{i} = library.create_book "title"
)
TOPLEVEL_BINDING.eval(src)
end
3.times { reader0.take(book0) } # error
5.times { reader1.take(book1) }
1.times { reader2.take(book2) }
0.times { reader3.take(book3) }
1.times { reader4.take(book4) }
puts book0.title
我想知道你为什么要这样做?使用数组或散列来存储对象并从中读取它们会不会更容易? – spickermann
由于Ruby v1.8不能动态创建局部变量。 (它可以在v1.8中用'eval'完成。) –
@spickermann希望我的代码类似rspec) – bjornmelgaard