2

IRB 和 Ruby 执行某些表达式的方式有区别吗?

这些表达式在 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!
4

1 回答 1

1

String#[]for的文档1.8.7

str[fixnum] = fixnum

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

是相同的文档1.9.3:存在相同的定义

经过测试,Ruby 1.9.3 中发生的事情s.length并没有超出分配范围。这在字符串的末尾是有意义的:您不必随意填充缺失的索引,但我猜它可能或应该记录在某处?

于 2012-06-20T00:42:25.343 回答