Kev*_*vin 3 ruby bash executable
看起来,当将Ruby代码放在可执行脚本中时,String的索引行为与IRB中的行为不同,或者直接运行Ruby代码.例如:
$ cat > test
#!/usr/bin/ruby -w
puts 'hello'[0]
$ chmod +x test
$ ./test
104
$ ruby -e "puts 'hello'[0]"
h
Run Code Online (Sandbox Code Playgroud)
为什么是这样?而且,如何使可执行脚本的行为与"普通"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是快速调试此类问题的好方法.