我觉得如果"".to_i
和"".to_f
为nil
或引发异常会很自然,而且定义nil.to_i
或{对我来说没有多大意义{1}}。
nil.to_f
,nil.to_i #=> 0
,"".to_i #=> 0
和nil.to_f #=> 0.0
有哪些用例?
答案 0 :(得分:2)
两种情况:
起始值。
@count = @count.to_i.next
而不是
@count = 0
@count += 1
方便转型。
通常会返回带有一些值的集合,nil
。通常,您要么删除它们,要么将它们计为默认值。
假设您有一种方法可以计算每个SO用户评分最高的帖子的平均分数。如果用户根本没有帖子,则User#highest_rated
将返回nil
:
users.map{ |user| user.highest_rated.to_i }.reduce(:+) / users.size
这不是一个完美的例子,但它始终发生在日常变换中。
为什么不提出异常或返回nil
?
Ruby超出了可用性。必须在任何地方检查nil
值都会显得有些笨拙。事实上,在很多情况下,当我使用这些操作时,确实要确保将nil
值转换为默认值。
此外,期望to_i
(例如)将返回一个整数。返回nil
将是一个轻微的重要时刻。