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

Cla*_*diu 5 javascript ruby python null

Ruby如何nil在代码中体现?例如,在Python你可能会当它是指另一个说法没有使用一个默认的说法,但在Ruby中,你可以参考其他参数的ARG列表(见这个问题).在JS中,undefined弹出更多,因为你根本无法指定默认参数.你能举例说明如何RubyNone弹出以及它是如何处理的?

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

tok*_*and 8

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

访问数组和哈希:

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

实例实例变量:

class MyClass
  def hello
    @thisdoesnotexist
  end
end

MyClass.new.hello #=> nil
Run Code Online (Sandbox Code Playgroud)

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

nil.to_i # 0
nil.to_f # 0.0 # But Integer(nil) or Float(nil) raise a TypeError.
nil.to_s # ""
Run Code Online (Sandbox Code Playgroud)

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

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

  • 实例变量名以`@`开头,类变量以`@@`开头. (2认同)