Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby,在变量中使用插值';名字_Ruby_Variables_Interpolation - Fatal编程技术网

Ruby,在变量中使用插值';名字

Ruby,在变量中使用插值';名字,ruby,variables,interpolation,Ruby,Variables,Interpolation,如果我有如下变量 i = 1 k1 = 20 有没有办法通过i的插值得到k1的值 大概 k"#{i}" => 20 提前谢谢。这取决于它是a还是asend“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" 如果确实需要,可以使用当前

如果我有如下变量

i = 1
k1 = 20
有没有办法通过i的插值得到k1的值

大概

k"#{i}"
=> 20

提前谢谢。

这取决于它是a还是a
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"
如果确实需要,可以使用当前和以下命令访问局部变量:

但这很糟糕。在这种情况下,最好使用:


“eval”是可能的,但不要这样做。这是一个糟糕的编程,依我看。为什么会这样?我是编程新手。请启发我。我的英语不是很好,但我会努力的。1) Eval是不安全的。2) 您确实想要使用数组。3) 符号引用(它是一个真正的符号引用——一个保留另一个变量名称的变量)很难读取、维护和调试。4) 这违反了编程的许多原则——名称空间、封装等。明白了!感谢您的评论。我学到了很多!eval对我很有用。我会记住你关于使用Hash.column1 column2 column3的建议。。。你想在循环中调用它们?你用什么来访问数据库?Most将返回一行,该行是包含行的数组、哈希或对象。对于数组和散列,您可以使用基于项的访问,如
行[0]
行[:列1]
等。您可以执行
行[i]
行[:“列{i}]
,或者更好的是,
行.each{code>值{124;…}
或类似操作。请不要实际使用
eval
,除非您必须这样做,你可能不会。谢谢你的洞察力,SJ和安德鲁。我切换到使用row[:“column#{I}”]。非常感谢你的帮助。
i = 1
k1 = "one"
local_variables
# => [:i, :k1]
binding.local_variable_get("k#{i}")
# => "one"
i = 1
k = {1 => "one"}
k[i]
# => "one"