【发布时间】:2013-04-23 23:49:32
【问题描述】:
在 ruby 中,我尝试在运算符“[]”中将字符串转换为 Int,但失败了。
这是代码(我的输入是14 45):
STDIN.gets.split(/\s+/).each do |str|
book = tags[str.to_i] # book is just a new variable. tags is an array
end
红宝石将停止并出现错误:
in '[]': no implicit conversion of String into Integer (TypeError)
所以我将我的代码更改为以下(这个效果很好。):
STDIN.gets.split(/\s+/).each do |str|
number = str.to_i # for converting
book = tags[number]
end
这个很好用。但我必须再添加一行进行转换。有没有避免这条线的好方法?
我的 ruby 版本是:$: ruby --version ==> ruby 2.0.0p0 (2013-02-24 revision39474) [i686-linux]
嗨,伙计们,请让我知道您为什么仍要关闭此主题。谢谢。
【问题讨论】:
-
什么是
tags、db和book?如果您的上层代码不起作用,那么第二部分也不起作用。您可能正在通过db[book]致电array[nil]。 -
@oldergod,嗨,我只是修改它。而且我不认为我在调用数组 [nil]。使用相同的输入,我的代码的第二个版本运行良好。
-
人们想要关闭这个话题,因为缺乏信息,这使得观众很难理解和/或复制你的问题。
-
可能你不小心写了
tags[str]或tags['str.to_i']之一,请检查。 -
两个代码都运行良好。您的问题不清楚。