[英]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.