我一直在阅读 Ruby Refactoring 书(Fields、Harvie、Fowler)。他们提到了提取环绕方法操作,如果您有中间部分彼此不同的方法,可以使用该操作来避免重复。
def number_of_descendants_named(name)
count_descendants_matchin { |descendant| descendant.name == name }
end
def number_of_living_descendants
count_descendants_matching { |descendant| descendant.alive? }
end
def count_descendants_mathing(&block)
children.inject(0) do |count, child|
count += 1 if yield child
count + child.count_descendants_matching(&block)
end
end
我相信你明白了。你会如何用 Javascript 做类似的事情?