为什么我在IRB和脚本中得到不同的结果?

时间:2012-06-19 23:27:43

标签: ruby

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!

1 个答案:

答案 0 :(得分:1)

HereString#[]的{​​{1}}的文档:

1.8.7
  

如果值为,则采用Fixnum的表单将引发IndexError   超出范围

Herestr[fixnum] = fixnum 的文档相同:存在相同的定义

经过测试,Ruby 1.9.3中1.9.3发生的事情并不超出分配范围。这是有意义的它是字符串的结尾:你不必任意填充缺少的索引,但我想它可能或应该在某处记录?