为什么红宝石添加不能强制给定字符串到fixnum和副verca?
irb>fixnum = 1
=> 1
irb> fixnum.class
=> Fixnum
irb> string = "3"
=> "3"
irb> string.class
=> String
irb> string.to_i
=> 3
irb> fixnum + string
TypeError: String can't be coerced into Fixnum
from (irb):96:in `+'
from (irb):96
from :0
irb(main):097:0>
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 10
因为ruby不知道您是要将字符串转换为int还是将int转换为字符串.在例如java 1 + "3"是"13".Ruby更喜欢引发错误,以便用户可以决定是对to_s一个操作数还是另一个操作数to_i,而不是自动做错事.
它吐出错误,因为红宝石不知道你想要什么.String + fixnum是一个含糊不清的语句.它可能意味着您要添加字符串的int值和数字,或者int和字符串的字符串值.例如:
str = "5"
num = 3
puts str.to_i + num
=> 8
puts str + num.to_s
=> 53
Run Code Online (Sandbox Code Playgroud)
而不是猜测你想要的那些,ruby只是抛出异常.
| 归档时间: |
|
| 查看次数: |
4464 次 |
| 最近记录: |