Did you know that you can navigate the posts by swiping left and right?
Ruby程序中的所有对象都源自于BasicObject
结合《Ruby元编程》上的内容,得到如下图所示的一张关系图:
在实战中,经常遇到这样的一个错误: NoMethodError: undefined method ‘’ for nil:NilClass
这就是一个nil的对象去调用不属于NilClass的方法时出现的错误。
一般使用以下几种方法来防止错误的出现:
由于所有的对象都源自于BasicObject,其他的对象是通过继承得到的,在这样的情况下,多态就不可避免地出现了。(这么说,似乎不是很合适。)两个不是同一个类的对象,有着相同的方法。比如,Object对象的to_s方法,就可以将对象转换为字符串;对于NilClass的对象来说,可以得到字符串;对于String对象来说,也可以得到其本身……
对于nil对象的转换,我们一般使用以下方法来执行:
nil.to_s #=> ""
nil.to_a #=> []
nil.to_i #=> 0
nil.to_f #=> 0.0
如果nil对象存在于数组中,则可以使用compact方法删去数组中的nil对象。
arr = [1, nil, 2] #=> [1, nil, 2]
arr.compact #=> [1, 2]
完