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

Ruby的用例为nil,相当于Python None或JavaScript undefined

发布时间:2020-12-17 03:58:12 所属栏目:百科 来源:网络整理
导读:Ruby的nil如何在代码中显示出来?例如,在 Python中,当引用另一个参数时,可以使用None作为默认参数,但在Ruby中,您可以引用arg列表中的其他参数(参见 this question).在JS中,undefined会弹出更多,因为您根本无法指定默认参数.你能举例说明RubyNone是如何弹出的
Ruby的nil如何在代码中显示出来?例如,在 Python中,当引用另一个参数时,可以使用None作为默认参数,但在Ruby中,您可以引用arg列表中的其他参数(参见 this question).在JS中,undefined会弹出更多,因为您根本无法指定默认参数.你能举例说明RubyNone是如何弹出的以及它是如何处理的?

我不是只想找一个使用nil的例子.优选地,它将是真实的代码片段,由于某种原因或其他原因必须使用nil.

解决方法

Ruby的 nil和Python的None几乎相同(它们代表缺乏价值),但来自Python的人可能会发现令人惊讶的行为.首先,在Python引发异常的情况下,Ruby返回nil:

访问数组和哈希:

[1,2,3][999] # nil. But [].fetch(0) raises an IndexError
{"a" => 1,"b" => 2}["nonexistent"] # nil. But {}.fetch("nonexistent") raises an IndexError

实例实例变量:

class MyClass
  def hello
    @thisdoesnotexist
  end
end

MyClass.new.hello #=> nil

第二个显着的事实是nil是一个有很多方法的对象,你甚至可以将它转换为整数,浮点数或字符串:

nil.to_i # 0
nil.to_f # 0.0 # But Integer(nil) or Float(nil) raise a TypeError.
nil.to_s # ""

不出所料,一些Python程序员倾向于不喜欢这种宽容行为(我最初做过),但是一旦你习惯它就可以了.

我不确定这会回答你的问题,只是我的2美分.

(编辑:李大同)

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

    推荐文章
      热点阅读