Ruby:变量内部的变量

时间:2014-07-17 23:31:44

标签: ruby

我刚刚开始使用Ruby,我面临以下问题。

ip_array = [1.1.1.1,2.2.2.2]

for i in 0..1
    puts `ping #{ip_array[#{i}]}`

end

这给了我一个错误:意外的IDENTIFIER,期待']'

然而这是有效的

ip_array = [1.1.1.1,2.2.2.2]

for i in 0..1
    puts `ping #{ip_array[i]}`

end

有人可以解释一下,我认为#{ip_array[#{i}]}#{ip_array[i]}

更正确

1 个答案:

答案 0 :(得分:4)

实际上版本#{ip_array[i]}是正确的,因为变量在ruby字符串中使用语法#{<var_name>}替换,如您所见here

所以你不能在变量名中使用hashtag('#'),就像你在#{ip_array[#{i}]中尝试一样,因为这标志着新变量替换的开始,而之前的替换尚未完成。

#ip_array[i]只是在字符串中替换的一个变量而不是两个变量。