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



我在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}",
                 ]

稍后会更新一些变量。是否有任何方法可以在访问数组时获得数组中所有变量的最新值?

假设我的代码是这样的我总是得到数组的初始值而不是我想要的(里面有更新的变量)

$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]

不能,字符串插补是一次性操作。它通过替换值来修改字符串,就是这样。但是,只要稍微修改一下代码,就可以这样做:

$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]来实际调用它

最新更新