Nin*_*a2k 1 ruby ruby-on-rails
我试图做一些不寻常的事情作为另一个问题的解决方法.我想存储ruby命令并在以后执行它们.
我可以将命令存储在变量ok中,但我只能将它们打印到屏幕上,我玩弄扁平以查看是否可以以某种方式将它们转换为可用的形式,但它不起作用.
这是一个例子:
Command_Store = Array[puts "Hello World", my_first_array = array.new, puts "Hello World again"]
execute.Command_Store[0] => Hello World
execute.Command_Store[1] => my.first_array[]
execute.Command_Store[2] => Hello World again
Run Code Online (Sandbox Code Playgroud)
您还可以将lambda用于此类任务:
command_store = []
command_store << lambda { puts "Hello World" }
command_store << lambda { my_first_array = Array.new }
command_store << lambda { puts "Hello World again" }
command_store.each(&:call)
#=> Hello World
#=> Hello World again
Run Code Online (Sandbox Code Playgroud)
更新:
你可以捕获变量my_first_array,这就是所谓的闭包
my_first_array = [3,4,5,6,7]
command_store << lambda { puts my_first_array[0] }
command_store.each(&:call)
#=> ...
#=> 3
Run Code Online (Sandbox Code Playgroud)
为什么不使用标准函数eval()?
例如(来自链接的文章)
code = "Time.now"
result = eval(code)
puts result
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |