Ho una classe chiamata Note
, che include una variabile di istanza denominata time_spent
. Voglio essere in grado di fare qualcosa del genere:Come uso il mixin Enumerable nella mia classe?
current_user.notes.inject{|total_time_spent,note| total_time_spent + note.time_spent}
Questo è possibile miscelando nel Enumerable module? So che dovresti aggiungere include Enumerable
alla classe e quindi definire un metodo each
, ma il metodo dovrebbe essere ogni classe o istanza? Cosa succede nel metodo each
?
sto usando rubino 1.9.2
Mi scusi se la mia domanda è all'oscuro, ma dal momento che 'current_user.notes' è già una matrice, il che significa che comprende già Enumerable, perché avete bisogno di fare qualcosa di più? Il tuo esempio può già essere eseguito con una piccola modifica: 'current_user.notes.inject (0) {| total_time_spent, note | total_time_spent + note.time_spent} ' –
Oppure se stai usando le rotaie:' current_user.notes.sum (&: time_spent) ' – aidan