2014-07-17 56 views
0

我刚刚在Ruby中启动,我面临以下问题。Ruby:变量里面的变量

ip_array = [1.1.1.1,2.2.2.2] 

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

end 

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

但是这个作品

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

回答

4

实际上版本#{ip_array[i]}是正确的,因为变量在ruby字符串中被替换为使用syn税:#{<var_name>},你可以看到here

因此,您不能在变量名称内使用哈希标签('#'),就像您在#{ip_array[#{i}]中尝试的那样,因为这标志着新变量替换的开始,并且前一个替换尚未完成。

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