带有默认值的 to_i
galeki
posted @ 2008年3月30日 20:24
in Ruby&Rails进修
with tags
ruby
, 1901 阅读
Ruby 中的 to_i 方法可以把对象转换成数字,"123".to_i 就返回 123,用来将用户输入的文本转换成数字非常实用。
不过如果对象无法转换成数字,to_i 就返回 0 了,假如我想在用户的输入无意义的情况下,取一个默认值 ( 比如 50 ),而不是 0,就要:
-
if input.to_i == 0
-
return 50
-
else
-
input.to_i
-
end
这样的代码很让人郁闷…… 更好的办法是利用 Ruby 方便的语法特性,定义一个 to_num 方法:
-
module Kernel
-
def to_num(default=0)
-
self.to_i == 0 ? default : self.to_i
-
end
-
end
这样,所有的对象都可以应用这个带有默认值的 to_num 方法了~ 
-
irb > "123".to_num
-
=> 123
-
irb > "abc".to_num
-
=> 0
-
irb > "abc".to_num(50)
-
=> 50
完全可以取代 to_i 方法。
评论 (0)