0
如何將屬性名稱傳遞給方法sort_by
並在其中使用?例如,假設我想創建一個FrequencyCounter
,其中包含一組單身對象Foo
。 (重要的是他們是單身人士,因爲這意味着會有一定數量的相同的Foo
s)。如何將排序條件傳遞給方法以便可以使用sort_by
class Foo
attr_accessor :arbitrary_sorter
def initialize arbitrary_sorter
@arbitrary_sorter = arbitrary_sorter
end
end
class FrequencyCounter
def initialize ary
#multiset will create a hash of frequency like {3=>obj, 2->obj, 2=>obj, etc}
@hash = Multiset.new(ary).hash
end
def sort_by params={}
Hash[@hash.sort_by {|k,v| [-1 * v, -1 * k]}]
end
end
當我創建頻率對象:
@fc = FrequencyCounter.new([Foo.get(5), Foo.get(4), Foo.get(5), Foo.get(1)])
我想告訴@fc
什麼菜上:
@fc.sort_by(:arbitrary_sorter)
這可能嗎?
什麼是'Foo.get'?它沒有被定義。 – sawa 2011-06-12 17:27:12
這只是一種檢索具有給定任意值的singleton值的方法 – 2011-06-12 17:28:03