gpt4 book ai didi

ruby - 无方法错误 : undefined method `+@' for "some sting":String

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:38 27 4
gpt4 key购买 nike

我的 Rails 应用程序今天才开始收到此错误。这是代码上下文。它在以 new_host_id

开头的行上抛出错误
while @host_ids.include?(new_host_id)
i++
new_host_id = duplicate_host_id + i.to_s
end

最佳答案

Ruby 没有++操作符。

Ruby中的成语是i += 1,是i = i + 1的缩写形式。


最初我认为发布的代码不正确,必须是 ++i 才能生成该错误。然而,正如 Jörg W Mittag 在评论中解释的那样,情况并非如此:

[..] Ruby allows whitespace (including line breaks) between an operator and the operand(s), so the entire thing is interpreted as i + (+(new_host_id = duplicate_host_id + i.to_s)) [.. which is] why the NoMethodError refers to String.

这是一个显示问题的简化示例(发布的代码指的是第一种情况):

> x = "hello"> +xundefined method `+@' for "hello":String (NoMethodError)> x+syntax error, unexpected $end

我在上面使用 + 而不是 ++ 来简化示例:Ruby 对待 ++ii++ 作为产品 +(+i) 和 [大致] i+(+) ..

关于ruby - 无方法错误 : undefined method `+@' for "some sting":String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512793/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com