ruby – 未定义的方法’@’
发布时间:2020-12-17 04:01:48 所属栏目:百科 来源:网络整理
导读:我不明白为什么这不起作用;所有三个元素都应该是字符串. i = 5base = "somestring"base = i.to_s +" #{base} " + i.to_s # = Undefined method '+@' 为什么它将其解释为一种方法?我想也许它与设置base等于自身的一部分有关,但这似乎有效: base = "#{base}"
我不明白为什么这不起作用;所有三个元素都应该是字符串.
i = 5 base = "somestring" base = i.to_s +" #{base} " + i.to_s # => Undefined method '+@' 为什么它将其解释为一种方法?我想也许它与设置base等于自身的一部分有关,但这似乎有效: base = "#{base}" 解决方法
好问题!在ruby中,@方法定义了一元运算符的行为.换句话说,它定义了当你有一个像someSymbol这样的表达式时会发生什么.
因此,在这种情况下,它会看到表达式的一部分“#{base}”并尝试将一元方法应用于不存在的字符串. 尝试在字符串的开头和字符串的开头之间添加一个空格. 有趣的是,这只会在某些情况下发生. i = 2 i.to_s +"foo" # => NoMethodError: undefined method `+@` for "foo":String "2" +"foo" # => "2foo" 发生什么了? i.to_s“foo”相当于i.to_s(“foo”).现在您可以看到为什么要调用一元函数而不是字符串连接运算符. 因此,您还可以使用其他选项来修复代码: i.to_s() +" #{base} " + i.to_s 甚至 "#{i} #{base} #{i}" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |