【问题标题】:Dynamically create Ruby variables with string interpolation [duplicate]使用字符串插值动态创建 Ruby 变量
【发布时间】:2015-08-15 09:16:10
【问题描述】:

我想做这样的事情:

4.times do |n|
  "member#{n}" = Fabricate(:user)
end

调用member1member2 等会给我用户实例。 #send 或 #eval 对我的情况有用吗?感谢观看。

【问题讨论】:

    标签: ruby variables interpolation


    【解决方案1】:

    您不能以这种方式动态设置local variables,因为您实际上要做的是设置String。您的代码解释如下

    "member1" = Fabricate(:user)
    

    这将为意外的= 引发SyntaxError,因为您不能将String 设置为任何内容。

    但是,您可以使用 instance_variables 执行此操作,如下所示:

    4.times do |n|
      instance_variable_set("@member#{n}", Fabricate(:user))
    end
    

    然后使用@member1@member2 等访问它们。

    回答你的第二个问题是没有 sendeval 在这种情况下没有特别的用途

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2017-10-22
      • 2016-01-15
      • 1970-01-01
      • 2019-06-03
      • 2022-06-25
      • 1970-01-01
      相关资源
      最近更新 更多