当你使用 nil 进行初始化时,Ruby 中的效果是什么:x = String(nil)。

3
当你将nil传递给Ruby中的构造函数时,会产生什么效果?
s = String(nil)

或者

a = Array(nil)

这是否意味着sanil,还是它们是未填充的String类型或Array类型的对象?

2
你为什么不试一下呢??!你怎么了?s = String(nil); puts s.class - horseyguy
1个回答

7

String(arg) 调用 argto_s 方法并返回结果。 nil.to_s 返回一个新的空字符串。因此,String(nil) 返回一个新的空字符串。

Array(arg) 尝试调用 argto_aryto_a 方法,返回第一个存在的方法的结果(如果两个方法都不存在,则返回 [arg])。NilClass 没有 to_ary 方法,但是 nil.to_a 返回一个新的空数组。因此,Array(nil) 返回一个新的空数组。

请注意,String(arg)Array(arg)不是构造函数。它们只是在Kernel中定义的全局方法。要在Ruby中构造对象,通常会在类上调用new,例如Array.new(2)以创建长度为2的数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接