Ruby:变量中的变量

Ruby:变量中的变量,ruby,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_数组[{I}]}比{ip_数组[I]

我刚刚开始学习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_数组[{I}]}
{ip_数组[I]}

实际上版本
{ip_数组[I]}
是正确的,因为变量在ruby字符串中使用语法替换:
{ip_数组[I]}
,如您所见

因此,您不能在变量名中使用hashtag(“#”),就像您在
{ip_数组[#{i}]
中尝试的那样,因为这标志着新变量替换的开始,而之前的替换尚未完成


#ip_数组[i]
只是字符串中替换的一个变量,而不是两个变量。

实际上,
#{ip_数组[i]}
版本是正确的,因为变量在ruby字符串中使用语法进行替换:
{}

因此,您不能在变量名中使用hashtag(“#”),就像您在
{ip_数组[#{i}]
中尝试的那样,因为这标志着新变量替换的开始,而之前的替换尚未完成

#ip_数组[i]
在字符串中仅替换了一个变量,而不是两个变量