这里是新用户,所以我对此帖子的格式设置不正确表示歉意。
我正在学习如何编写Ruby,并且正在使用Notepad ++。我正在处理的文件之一是 todemu.rb ,它是一个告诉您有关字符的详细信息名为Todemu的文件。
我添加的方法之一是:
todemu.age = "27"
显示年龄。然后,我将其放入变量中,这样我可以更轻松地将其插入句子中。
x = todemu.age
puts "How old is Todemu?"
puts "Todemu is" + " " + x.to_s + " " + "years old."
显示我想要的输出, Todemu已经27岁了。
然后,我尝试通过使用以下代码来增加年龄的值:
x += 1
但是,Notepad ++中的控制台(我为此使用了 NppExec 插件)显示了此错误:
todemudan.rb:26:in '+': No implicit conversion of Integer into String (TypeError)
为什么在错误中显示加符号,我该如何解决?
此外,我已经研究了Stack Overflow中大多数措辞相似的问题,但似乎都无法纠正我的问题(感谢iGian提醒我)。
在此先感谢您的感谢,
答案 0 :(得分:4)
您将年龄保留在字符串中,并尝试对整数使用“ +”运算符。您可能应该将年龄存储为整数,以便可以使用“ +”将其添加。如果无法做到这一点,则可以在添加之前始终使用.to_i进行投射,例如:
age = x.to_i+1
我建议您阅读一些涉及Ruby类型系统的教程,例如:http://zetcode.com/lang/rubytutorial/datatypes/
Ruby的类型系统迫使您在这种情况下要注意类型,而不是例如PHP的+运算符,如果两个参数之一是字符串而另一个参数是整数(不会引发错误),它将连接在一起
整数添加
i = 1
i + 1 # => 2
字符串+整数
i = "1"
i + 1 # => error
i.to_i + 1 # => 2
i + "1" # => 11
插值
i = 27
puts "My age is #{i}" # => My age is 27
答案 1 :(得分:0)
您可以在代表数字的字符串上调用.to_i
方法。 .to_i
会将字符串强制转换为整数,而.to_f
会将其转换为浮点型。但是请确保字符串代表数字。如果调用'number'.to_i
,它将返回零