当你将
这是否意味着
nil
传递给Ruby中的构造函数时,会产生什么效果?s = String(nil)
或者
a = Array(nil)
这是否意味着
s
或a
是nil
,还是它们是未填充的String
类型或Array
类型的对象?nil
传递给Ruby中的构造函数时,会产生什么效果?s = String(nil)
或者
a = Array(nil)
s
或a
是nil
,还是它们是未填充的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的数组。
s = String(nil); puts s.class
- horseyguy