回答
这取决于它是local variable还是method。 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"
如果你真的需要,你可以使用当前Binding
和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"
eval对我很好。我会记住你使用哈希的建议。 – 2012-04-17 01:34:33
但是,如果你有数据库列,如... – 2012-04-17 01:34:57
column1 column2 column3 ...,你想要在循环内调用它们,你会怎么做? – 2012-04-17 01:35:26
- 1. 如何使用JavaScript变量红宝石
- 2. 红宝石使用范围变量?
- 3. 红宝石变量澄清
- 4. 红宝石。变量权限
- 5. 红宝石范围变量
- 6. 红宝石会话变量
- 7. 什么是最好的使用 - 红宝石宝石或红宝石插件
- 8. 红宝石插值
- 9. 转换JavaScript变数红宝石变量
- 10. 变量改变值,红宝石
- 11. 使用红宝石
- 12. 红宝石散列在红宝石
- 13. 红宝石测试和赋值变量
- 14. 动态变量访问红宝石
- 15. $ DEBUG红宝石全局变量
- 16. 红宝石 - 上的所有块变量
- 17. 红宝石不会打印变量
- 18. 如何限制红宝石变量?
- 19. 红宝石变量同治问题
- 20. 红宝石轨道 - 闪存变量
- 21. 红宝石:发出与变量
- 22. 红宝石苗条 - 类从变量
- 23. 红宝石:参数与变量
- 24. 红宝石 - 传递变量eval方法
- 25. 未初始化的常量使用Twitter的红宝石宝石
- 26. 红宝石插座问题
- 27. 在红宝石
- 28. 在红宝石
- 29. 在红宝石
- 30. 在红宝石
这可能与“eval”但不这样做。这是一个糟糕的编程,海事组织。 – yazu 2012-04-17 01:18:26
为什么会这样?我是编程新手。请赐教。 – 2012-04-18 02:10:41
我的英语不是很好,但我会尝试。 1)评估是不安全的。 2)你真的想要使用一个数组。 3)符号引用(它是一个真正的符号引用 - 保留另一个变量名称的变量)很难读取,维护和调试。 4)这违反了很多编程原则 - 命名空间,封装等。 – yazu 2012-04-18 04:28:00