4

如果我有如下变量,

i = 1
k1 = 20

有什么方法可以通过 i 的插值获得 k1 的值?

就像是,

k"#{i}"
=> 20

提前致谢。

4

1 回答 1

4

这取决于它是局部变量还是方法send "k#{i}"应该用方法来解决问题:

class Foo
  attr_accessor :i, :k1

  def get
    send "k#{i}"
  end
end

foo = Foo.new
foo.i = 1
foo.k1 = "one"
foo.get
# => "one"

如果你真的需要,你可以使用当前的Bindingand访问局部变量local_variable_get

i = 1
k1 = "one"
local_variables
# => [:i, :k1]
binding.local_variable_get("k#{i}")
# => "one"

不过这很糟糕。在这种情况下,你最好使用 a Hash

i = 1
k = {1 => "one"}
k[i]
# => "one"
于 2012-04-17T01:17:43.890 回答