以下のような変数がある場合、
i = 1
k1 = 20
iの補間でk1の値を取得する方法はありますか?
何かのようなもの、
k"#{i}"
=> 20
前もって感謝します。
以下のような変数がある場合、
i = 1
k1 = 20
iの補間でk1の値を取得する方法はありますか?
何かのようなもの、
k"#{i}"
=> 20
前もって感謝します。
ローカル変数かメソッドかによって異なります。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"