我是 Ruby 的新手,遇到了一些让我有点困惑的事情。
我在方法签名中设置了默认参数值。
调用该方法时,我向该参数传递了一个nil
参数。
但是没有分配默认值;它仍然存在nil
。
# method with a default value of 1000 for parameter 'b'
def format_args(a, b=1000)
"\t #{a.ljust(30,'.')} #{b}"
end
# test hash
dudes = {};
dudes["larry"] = 60
dudes["moe"] = nil
# expecting default parameter value
puts "Without nil check:"
dudes.each do |k,v|
puts format_args(k,v)
end
# forcing default parameter value
puts "With nil check:"
dudes.each do |k,v|
if v
puts format_args(k,v)
else
puts format_args(k)
end
end
输出:
Without nil check:
larry......................... 60
moe...........................
With nil check:
larry......................... 60
moe........................... 1000
这是预期的行为吗?
我错过了什么 ruby-foo?
似乎与nil
我习惯null
用其他语言思考的“没有价值”不同。