我是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
Run Code Online (Sandbox Code Playgroud)
输出:
Without nil check:
larry......................... …
Run Code Online (Sandbox Code Playgroud) ruby ×1