我现在开始学习一些红宝石,正在做Ruby Koans练习。然后我卡在代码:在ruby代码中assert fido.methods.size> 0的含义是什么?
def test_objects_have_methods
fido = Dog.new
assert fido.methods.size > 0
end
我很困惑fido.methods
。它指的是什么?
谢谢!
我现在开始学习一些红宝石,正在做Ruby Koans练习。然后我卡在代码:在ruby代码中assert fido.methods.size> 0的含义是什么?
def test_objects_have_methods
fido = Dog.new
assert fido.methods.size > 0
end
我很困惑fido.methods
。它指的是什么?
谢谢!
它返回对实例fido
所有调用方法的阵列。
我没有用它在生产,但它可以是相当不错的调试或编写怪异脚本时。
有上一切优秀的文档。 Object#methods
:
返回的OBJ公共和保护的方法的名称列表。这将包括obj的祖先可以访问的所有方法。如果可选参数为
false
,它返回的OBJ的公共和保护单方法阵列,该阵列将不包括包含在OBJ模块的方法。
既然你是在Dog
例如,显然是从Object
衍生调用它,方法列表包括所有这些,对Object
定义。
谢谢!但在这种情况下,'fido'没有任何方法,因此大小为0?但是代码表示大小大于0? – Penny
对不起,我能再问你一个问题吗?代码“def fido.wag:fidos_wag end”中的':fidos_wag'是什么?它是一个属性?或者是其他东西? – Penny
fido是班级狗的一个实例。 “Dog”类继承自“Object”,它为其提供了大量的默认方法。像'nil?','is_a?','object_id'和类似的东西。因此,大小不会为0 – Albin