加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么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.

解决方法

当不提供参数时,使用默认参数.

如果你提供它为零,那么它将是零.所以是的,这是预期的行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读