2012-05-24 48 views
1

我有兩個文件init.rbairport.rb如何獲取塊中元素的數量?

我如何計算匹配值的項目數?

init.rb:

airport1.airplanes_count { |a| a.aircraft_type == "Boeing 747" } 

airport.rb:

def airplanes_count 
    @airplanes.each { |a| a if yield(a) } 
end 

如果aircraft_type =波音747,我需要得到一個飛機數量:

=> 2 

代替飛機名稱

=> #<Airplane:0x0000000155e348> 
    #<Airplane:0x0000000155e028>" 

回答

0

你的方法應該是這樣的:

def airplanes_count 
    @airplanes.count{ |a| a if yield(a) } 
end 
+0

gabitzish +1 \t高清airplanes_count \t \t放@ airplanes.count {| A | a if yield(a)} \t end – Savroff

+0

+1在哪裏? :D – gabitzish

+0

ssory:D沒有聲望:)我的第一個secodns在stackoverflow))) – Savroff

1

紅寶石已經帶來了對所有普查員一個count方法(如散列,數組,...)。你可以在「轉發」你塊這樣的:

def airplanes_count(&block) 
    @airplanes.count(&block) 
end 
0

有更好的方法來做到這一點......但如果你不想改變太多的代碼,你可以改變的身體airplanes_count到這條線。

def airplanes_count 
    @airplanes.inject(0) { |count,a| yield(a)? (count + 1) : count } 
end 

這會給你你在找什麼。