nic*_*ckl 3 ruby null initialization
当您传递nil
给构造函数时,Ruby中的效果是什么:
s = String(nil)
Run Code Online (Sandbox Code Playgroud)
要么
a = Array(nil)
Run Code Online (Sandbox Code Playgroud)
这是否意味着,s
或者a
是 nil
或s
或者a
是一个类型的无人居住对象String
或类型Array
?
String(arg)
呼吁to_s
对arg
并返回结果.nil.to_s
返回一个新的空字符串.String(nil)
因此返回一个新的空字符串.
Array(arg)
尝试调用to_ary
然后再to_a
打开arg
,返回存在的第一个方法的结果(或者[arg]
如果两个方法都不存在).NilClass
没有to_ary
方法,但nil.to_a
返回一个新的空数组.Array(nil)
因此返回一个新的空数组.
请注意,String(arg)
并Array(arg)
没有构造函数.它们只是定义的全局方法Kernel
.要在Ruby中构造对象,通常调用new
一个类,例如Array.new(2)
创建一个长度为2的数组.