`nil`.to_i #=> 0`, `"".to_i #=> 0` `nil`.to_f #=> 0.0`, `"" .to_f #=> 0.0`
Use case for `nil`.to_i #=> 0`, `"".to_i #=> 0` `nil`.to_f #=> 0.0`, `"".to_f #=> 0.0`
我觉得如果 "".to_i
和 "".to_f
是 nil
或抛出异常会很自然,定义 nil.to_i
对我来说意义不大或 nil.to_f
.
nil.to_i #=> 0
、"".to_i #=> 0
、nil.to_f #=> 0.0
和 "".to_f #=> 0.0
的用例是什么?
两种情况:
起始值。
@count = @count.to_i.next
相对于
@count = 0
@count += 1
转换方便。
您经常会得到包含 return 一些值的集合,这些值是 nil
。通常,您想要删除它们或将它们计为默认值。
假设您有一种方法可以计算每个 SO 用户评分最高 post 的平均分数。如果用户根本没有 post,User#highest_rated
将 return nil
:
users.map{ |user| user.highest_rated.to_i }.reduce(:+) / users.size
这不是一个完美的例子,但它一直在日常转换中发生。
为什么不引发异常或 return nil
?
Ruby 超出可用性。必须在所有地方检查 nil
值看起来有点笨拙。事实上,在很多情况下,当我使用这些操作时,正是为了确保 nil
值被转换为它们的默认值。
此外,人们期望 to_i
(例如)将 return 是一个整数。返回 nil
将是一个轻微的 wtf 时刻。
我觉得如果 "".to_i
和 "".to_f
是 nil
或抛出异常会很自然,定义 nil.to_i
对我来说意义不大或 nil.to_f
.
nil.to_i #=> 0
、"".to_i #=> 0
、nil.to_f #=> 0.0
和 "".to_f #=> 0.0
的用例是什么?
两种情况:
起始值。
@count = @count.to_i.next
相对于
@count = 0 @count += 1
转换方便。
您经常会得到包含 return 一些值的集合,这些值是
nil
。通常,您想要删除它们或将它们计为默认值。假设您有一种方法可以计算每个 SO 用户评分最高 post 的平均分数。如果用户根本没有 post,
User#highest_rated
将 returnnil
:users.map{ |user| user.highest_rated.to_i }.reduce(:+) / users.size
这不是一个完美的例子,但它一直在日常转换中发生。
为什么不引发异常或 return nil
?
Ruby 超出可用性。必须在所有地方检查 nil
值看起来有点笨拙。事实上,在很多情况下,当我使用这些操作时,正是为了确保 nil
值被转换为它们的默认值。
此外,人们期望 to_i
(例如)将 return 是一个整数。返回 nil
将是一个轻微的 wtf 时刻。