【问题标题】:undefined method '+@' - Ruby Error未定义的方法 '+@' - Ruby 错误
【发布时间】:2011-06-22 04:31:14
【问题描述】:

我一直在尝试在 Ruby 中编写类似于以下内容的 while 循环:

number = 3
string = "lalaLand"
def main(number, string)
    n = 1
    while n <= number do
        print string + 'something else' + n.to_s
        n = n + 1
    end
end
main(number, string)

我不断收到错误:

...: undefined method `+@' for "lalaLand":String (NoMethodError)

谁能帮我解决这个问题? 谢谢

----EDIT--- (实际代码,可能我遗漏了什么)

devel_number 是唯一声明为 int 的(即:devel_number = 4,其余为字符串:project_name = "lalaLand") ...

def b_sani_dev(project_home, source_dir, project_name, devel_number)

    n = 1
    while n <= devel_number do
        system 'mkdir -p ' + project_home + 'dev_'+ n.to_s + '/main'
        system 'mkdir -p ' + project_home + 'dev_' + n.to_s + '/LOG'
        n = n + 1
    end            
    b_sani_dev(project_home, source_dir, project_name, devel_number)

【问题讨论】:

  • def b_sani_dev(project_home, source_dir, project_name, devel_number) n = 1 while n
  • 嗯,我的错,将为真实代码添加编辑
  • 您的两个代码示例都运行良好。它们的格式非常糟糕、极其复杂、丑陋且完全不习惯,但它们确实工作得很好。

标签: ruby methods undefined nomethoderror


【解决方案1】:

您发布的所有代码都应该可以正常工作,但错误源于尝试在字符串上使用一元 + 运算符,这是非法的。

+17   # totally fine
+"hi" # throws an error; what does this even mean?

【讨论】:

  • 是的,当添加两个字符串时,+ 将起作用。您的错误消息来自尝试仅在一个字符串上使用 +,这是没有意义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多