簡體   English   中英

為什么字符串索引返回整數值而不是字符?

[英]Why does a string index return an integer value instead of a character?

看起來,當將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代碼相同?

在1.9之前,Ruby返回單個字符的ASCII字符代碼。 1.9+切換到返回角色本身:

irb(main):001:0> RUBY_VERSION
=> "1.8.7"
irb(main):002:0> 'foo'[0]
=> 102
irb(main):001:0> RUBY_VERSION
=> "1.9.3"
irb(main):002:0> 'foo'[0]
=> "f"

使用常量RUBY_VERSION是快速調試此類問題的好方法。

當你輸入ruby ,你是在使用/usr/bin/ruby嗎? 你的$ PATH中可能有一個不同版本的ruby優先於這個版本。

我對此並不十分肯定,但如果String#[]有不同的回報,你會使用ruby 1.8或1.9,我不會感到驚訝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM