为什么Ruby的默认参数值不被赋值给nil参数?
发布时间:2020-12-16 20:30:13 所属栏目:百科 来源:网络整理
导读:我是Ruby的新手,遇到一些令我困惑的东西. 我在方法签名中设置一个默认参数值. 调用该方法时,我将一个零参数传递给该参数. 但默认值未分配;它仍然是零. # method with a default value of 1000 for parameter 'b'def format_args(a,b=1000) "t #{a.ljust(30,
我是Ruby的新手,遇到一些令我困惑的东西. 我在方法签名中设置一个默认参数值. 调用该方法时,我将一个零参数传递给该参数. 但默认值未分配;它仍然是零. # 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. 解决方法
当不提供参数时,使用默认参数.
如果你提供它为零,那么它将是零.所以是的,这是预期的行为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |