【发布时间】:2015-11-01 12:44:11
【问题描述】:
我有以下类定义
class Map < Array
def find_all_activerecord
self.find_all { |element| element.class.superclass == ActiveRecord::Base }
end
def find_all_family_nil
find_all { |element| element.try(:family) == nil }
end
def find_all_parents
self.find_all_activerecord.find_all_family_nil
end
end
我可以做到以下几点
@map = Map.new
@map.find_all_activerecord
@map.find_all_family_nil
但是当我尝试时
@map.find_all_parents
我在 []:Array 上收到未定义方法“find_all_family_nil”的错误
我明白发生了什么。自定义方法返回数组对象,该方法在 Class::Map 上定义
如何在自定义类上创建自定义方法,这些方法可能返回更高类的对象,但又能够将它们链接起来
我遇到的另一个问题是 换班 如果
@map = Map.new
然后
@map = @map + [1,2,3]
@map.class # => Array
为什么会发生这种情况应该做什么以及这是什么研究领域
【问题讨论】:
标签: ruby class object methods chaining