1

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

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

これはうまくいきます。しかし、変換のためにもう 1 行追加する必要があります。その行を回避する良い方法はありますか? ルビーの私のバージョンは次のとおりです。$: ruby --version ==> ruby 2.0.0p0 (2013-02-24 revision39474) [i686-linux]

こんにちは、なぜこのトピックを閉じたいのか教えてください。ありがとう。

4

1 に答える 1

6

取得しているエラー メッセージは、 aを にインデックスとして渡す場合にのみ発生します。そのため、実際に実行しているソースを表示していない可能性があります。検討: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

ところで、質問のエラー メッセージは Ruby 2.0.0 に固有のものです。

RUBY_VERSION
#=> "2.0.0"

a = [1,2,3]
a['string']
# TypeError: no implicit conversion of String into Integer

Ruby 1.9.3-p392 では、次のエラー メッセージが表示されます。

RUBY_VERSION
#=> "1.9.3"

a = [1,2,3]
a['string']
# TypeError: can't convert String into Integer
于 2013-04-30T09:20:47.647 に答える