是否有不同的方法来调用具有相似符号的变量的方法?

想象一下:

x_1 = "this is my dog"
x_2 = "this is my house"

我知道如果你想获得这些变量的长度,你需要使用.length.

我想知道是否有不同的方法来实现这一目标。这两个变量具有相似的符号 - 只有最后一个字符不同。我想做这样的事情:

["1","2"].each do |end|
  puts (x_1 + end).length
end

这是错误的,我知道,但我认为你得到了我想要做的。你有什么主意吗?

回答

是否有不同的方法来调用具有相似符号的变量的方法?

您不会在变量上调用方法。您在对象上调用方法。这是一个极其重要的区别。变量和对象根本不同,理解事物和事物名称不同的方式原因非常重要,不仅在 Ruby 中,而且在编程(甚至生活)中都是如此。

我知道如果你想获得这些变量的长度,你需要使用'.length'。

您无法获得变量的长度。变量没有“长度”。您只能获取对象的长度,而不能获取变量。

我想知道是否有不同的方法来实现这一点。这两个变量具有相似的表示法 - 只有最后一个字符不同。

是的,可以使用您使用以下Binding#local_variable_get方法动态构造的名称取消引用变量:

b = binding

%w[1 2].each do |suffix|
  puts b.local_variable_get(:"x_#{suffix}").length
end

然而,做这样的事情几乎总是一个错误设计的标志。

如果您有一系列具有连续名称的变量,那几乎总是某种想要出现的顺序数据结构,例如:

xs = ['this is my dog', 'this is my house']

xs.each do |string|
  puts string.length
end


以上是是否有不同的方法来调用具有相似符号的变量的方法?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>