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

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 nils或者a是一个类型的无人居住对象String或类型Array

Phi*_*oss 7

String(arg)呼吁to_sarg并返回结果.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的数组.