将nil传递给构造函数时, Ruby中的效果如下所示: s = String(nil) 要么 a = Array(nil) 这是否意味着s或a是nil或者s或a是String类型或类型Array的无人居住对象? String(arg) 在arg上调用to_s并返回结果
s = String(nil)
要么
a = Array(nil)
这是否意味着s或a是nil或者s或a是String类型或类型Array的无人居住对象?
String(arg)
在arg上调用to_s并返回结果.
nil.to_s
返回一个新的空字符串. String(nil)因此返回一个新的空字符串.
Array(arg)
尝试在arg上调用to_ary然后调用to_a,返回存在的第一个方法的结果(如果两个方法都不存在,则返回[arg]). NilClass
没有to_ary方法,但nil.to_a
返回一个新的空数组.因此,Array(nil)返回一个新的空数组.
请注意,String(arg)和Array(arg)不是构造函数.它们只是Kernel
中定义的全局方法.要在Ruby中构造对象,通常在类上调用new,例如Array.new(2)
创建一个长度为2的数组.