Vuoi dire qualcosa di carino come questo?
Mentre non c'è nulla nella libreria di base di Ruby che fornisce direttamente tale funzionalità, è piuttosto semplice aggiungerlo.
Si può solo scrivere metodo di supporto:
def count_all(array, values_to_count)
array.count { |el| values_to_count.include?(el) }
end
count_all([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], [3, 4]) # => 7
Si potrebbe invece utilizzare Ruby nuova refinements per aggiungere un metodo per Array
quando ne avete bisogno:
module ArrayExtensions
refine Array do
def count_all(*values_to_count)
self.count { |el| values_to_count.include?(el) }
end
end
end
# Then inside some module or class
using ArrayExtensions
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4].count_all(3, 4) # => 7
Oppure si può scegliere di prendere la più percorso hacky e modificare Array
direttamente:
class Array
def count_all(*values_to_count)
self.count { |el| values_to_count.include?(el) }
end
end
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4].count_all(3, 4) # => 7
Possibile duplicato di [Ruby: conta gli elementi univoci e le loro occorrenze in un array] (http://stackoverflow.com/questions/23294181/ruby-count-unique-elements-and-their-occurences-in-an- array) –
La domanda nominata come un esempio è simile, ma non un duplicato corretto: quella domanda chiede come trovare il conteggio di ciascun elemento distinto, mentre questa domanda richiede la somma dei conteggi degli elementi selezionati. –