Cla*_*diu 5 javascript ruby python null
Ruby如何nil在代码中体现?例如,在Python你可能会当它是指另一个说法没有使用一个默认的说法,但在Ruby中,你可以参考其他参数的ARG列表(见这个问题).在JS中,undefined弹出更多,因为你根本无法指定默认参数.你能举例说明如何RubyNone弹出以及它是如何处理的?
我不是只想用一个例子nil.优选地,它将是nil由于某种原因必须使用的真实代码片段.
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美分.
| 归档时间: |
|
| 查看次数: |
5744 次 |
| 最近记录: |