使用nil初始化时,Ruby的效果是什么:x = String(nil)

时间:2010-03-19 00:27:39

标签: ruby initialization null

nil传递给构造函数时,Ruby中的效果如下:

s = String(nil)

a = Array(nil)

这是否意味着sa nilsa是未填充的类型对象String或输入Array

1 个答案:

答案 0 :(得分:7)

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的数组。