2

IRB と Ruby の式の実行方法に違いはありますか?

これらの式は、IRB とコマンド ラインから実行した場合に異なる結果をもたらします。問題は、どちらが正しいかです。

IRB:

>> s = 'hello'
=> "hello"
>> s.size
>> s[s.length] = '!'
IndexError: index 5 out of string
    from (irb):31:in `[]='
    from (irb):31
>> 

通常のスクリプトでは、次のようになります。

s = 'hello'
s[s.length] = '!'
puts s

laptop user$ ./prgruby.rb 
hello!
4

1 に答える 1

1

これがforのドキュメントString#[]です1.8.7

str[fixnum] = fixnum

値が範囲外の場合、Fixnumを使用するフォームはIndexErrorを発生させます

これは同じドキュメントです1.9.3:同じ定義が存在します

テスト後、Ruby 1.9.3で発生することはs.length、割り当ての範囲外ではありません。これは文字列の終わりであるため意味があります。欠落しているインデックスを任意に埋める必要はありませんが、どこかに文書化されているか、文書化されている必要があると思いますか?

于 2012-06-20T00:42:25.343 に答える