无法在`[]`中将字符串更改为int

mad*_*per 1 ruby typeerror

在ruby中,我尝试在运算符' []' 中将String转换为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
Run Code Online (Sandbox Code Playgroud)

ruby会因错误而停止: 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
Run Code Online (Sandbox Code Playgroud)

这个很好用.但我必须再添加一行进行转换.有没有一种避免这条线的好方法?我的ruby版本是:$: ruby --version ==> ruby 2.0.0p0 (2013-02-24 revision39474) [i686-linux]

嗨大家好,请让我知道为什么你还想关闭这个话题.谢谢.

Pat*_*ity 6

当您将索引作为索引传递时,您肯定只会出现错误消息.所以你可能没有向我们展示你实际运行的来源.考虑:StringArray#[]

a = [1,2,3]
str = 'string'

str.to_i
#=> 0
a[str.to_i]
#=> 1

number = str.to_i
#=> 0
a[number]
#=> 1

a['string']
# TypeError: no implicit conversion of String into Integer
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您的问题中的错误消息特定于Ruby 2.0.0:

RUBY_VERSION
#=> "2.0.0"

a = [1,2,3]
a['string']
# TypeError: no implicit conversion of String into Integer
Run Code Online (Sandbox Code Playgroud)

而在Ruby 1.9.3-p392中,您将收到以下错误消息:

RUBY_VERSION
#=> "1.9.3"

a = [1,2,3]
a['string']
# TypeError: can't convert String into Integer
Run Code Online (Sandbox Code Playgroud)