我可以'刷新'变量的值吗?

时间:2011-12-31 03:54:49

标签: ruby variable-declaration

我声明需要完成的步骤,以便在我的ruby脚本开头的数组中安装wordpress

$wordpress_cmds = [ "mkdir -p #{$web_root}#{$web_directory}#{$web_url}/public_html",
                    "cp -R #{$wordpress_current}/*  #{$web_root}#{$web_directory}#{$web_url}/public_html",
                    "chown -R www-data:www-data #{$web_root}#{$web_directory}#{$web_url}",
                 ]

稍后会更新一些变量。有没有办法在访问arrya时获取数组中所有变量的最新值?

让我们说如果我的代码就像我总是得到数组的初始值而不是我想要的那个(里面有更新的变量)

$web_root = '====='
$wordpress_cmds = ["#{$web_root}"]

puts $wordpress_cmds[0]
$web_root= "new value"
puts $wordpress_cmds[0] 
$web_root.replace("new value")
puts $wordpress_cmds[0]

1 个答案:

答案 0 :(得分:2)

不,字符串插值是一次性操作。它通过替换值来修改字符串,就是这样。但是,通过略微修改的代码,您可以这样做:

$web_root = '====='
$wordpress_cmds = [lambda{"mkdir -p #{$web_root}#{$web_directory}#{$web_url}/public_html"}]

puts $wordpress_cmds[0].call
$web_root= "new value"
puts $wordpress_cmds[0].call 
$web_root.replace("new value")
puts $wordpress_cmds[0].call

输出:

=====
new value
new value

这里不是将字符串放入数组中。该函数将返回变量的实际值。因此,您必须$wordpress_cmds[0].call而不是$wordpress_cmds[0]来实际调用它。