使用变量命名对象 - Ruby

时间:2015-04-08 13:41:32

标签: ruby class object

我正在尝试在脚本中创建对象,但我无法通过使用变量来命名来创建对象,请参阅下文:

objname = "object"  # < Var used for Obj name

class SimpleClass
    def initialize(name)
    end
end

objname = SimpleClass.new("Jeff")  #does not work
# ^ using a variable to name the object

workingname = SimpleClass.new("Jeff") # will work

P.S 你们都是最好的,从一开始程序员的角度来看,我不知道没有这个网站我会在哪里。

1 个答案:

答案 0 :(得分:2)

不确定为什么要这样做,但可以使用像

这样的实例变量进行预处理
objname = "object"  # < Var used for Obj name

class SimpleClass
  def initialize(name)
  end
end

instance_variable_set("@#{objname}", SimpleClass.new("Jeff")) 
#=> #<SimpleClass:0x228a548> 
@object
#=> #<SimpleClass:0x228a548>
instance_variable_get("@#{objname}")
#=> #<SimpleClass:0x228a548>

所有这一切都说是一个糟糕的设计概念,正如你所看到的那样,使用标准的局部变量会更容易,因为你的代码会被使用instance_variable_get / set方法填充,这些方法在这种情况下不会有任何实际用途。< / p>