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"

本当に必要な場合は、 currentBindingとを使用してローカル変数にアクセスできlocal_variable_getます。

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

これはかなりひどいですが。この場合、次を使用する方がよいでしょうHash:

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