3

Ruby コードを実行可能スクリプトに入れると、String のインデックスは、IRB での動作や Ruby コードを直接実行した場合とは異なる動作をするようです。例えば:

$ cat > test
#!/usr/bin/ruby -w
puts 'hello'[0]
$ chmod +x test
$ ./test
104
$ ruby -e "puts 'hello'[0]"
h

どうしてこれなの?また、実行可能スクリプトを「通常の」Ruby コードと同じように動作させるにはどうすればよいでしょうか?

4

2 に答える 2

6

1.9 より前では、Ruby は単一文字の ASCII 文字コードを返しました。1.9+ は文字自体を返すように切り替えました:

irb (メイン):001:0> RUBY_VERSION
=>「1.8.7」
irb (メイン):002:0> 'foo'[0]
=> 102
irb (メイン):001:0> RUBY_VERSION
=>「1.9.3」
irb (メイン):002:0> 'foo'[0]
=>「フ」

定数を使用するRUBY_VERSIONと、この種の問題をすばやくデバッグできます。

于 2013-03-12T11:30:49.623 に答える
2

入力するときruby、あなたはあなたが使っているの/usr/bin/rubyですか?$PATHに異なるバージョンのrubyが優先されている可能性があります。

String#[]これについてはよくわかりませんが、ルビー1.8と1.9のどちらを使用していても、リターンが異なっていても驚かないでしょう。

于 2013-03-12T09:04:32.783 に答える