你的例子中,作为判断对象的是一个空数组,不执行后面的代码,也没有一个元素是false的,所以返回的是true,这是我的见解
class <<Persome code end 这个不是创建类,是打开eigenclass。eigenclass网上解释一大堆,简单地说一般一个实例要响应一个实例方法要看这个实例所属的类中有没有定义这个方法,eigenclass存在于这一步中间,比如实例要响应方法a,会先看这个实例的eigenclass有没有方法a,再看所属的类有没有方法a,参考以下代码class Per
def say word
puts word
end
end
per = Per.new
class <<per
def say word
puts word.reverse
end
end
per.say 'stressed' # desserts
Per.new.say 'stressed' # stressed
可以看到per虽然是Per的实例,但是执行say方法时是执行他的eigenclass里面的say方法,而不影响Per的其他实例的say方法,这就是eigenclass,具体会应用在元编程里取得metaclass,这里就不多说了。至于你问的输出,你可以试一下,classend 这个跟定义方法defend一样,会有返回值,返回值就是最后一个表达式,你可以试一下puts class Test'hello world'end,所以你的返回值就是不同作用域的self。