私は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