Sto cercando un modo per 'mappare' un singolo oggetto in Ruby.Ruby map() per un singolo oggetto
Voglio chiamare questa funzione e passarla a un blocco, l'oggetto verrà restituito al blocco e quindi il risultato del blocco verrà restituito al chiamante. Esattamente ciò che fa la mappa, ma per un singolo elemento.
La motivazione è che a volte si generano oggetti che sono appena utilizzati per costruire qualcos'altro. L'oggetto originale non è più necessario. Sarebbe bello mettere la conversione in un blocco ed eliminare il temporaneo.
Come esempio forzato, supponiamo di voler creare un numero intero che rappresenti la combinazione mese/anno. Per la data odierna, il codice sarebbe simile:
day = Date.today
month_number = day.year * 100 + day.month
Mi piacerebbe molto se avrei potuto fare qualcosa di simile:
month_number = Date.today.some_function { |d| d.year * 100 + d.month }
Ma io non so che cosa è 'una_qualche_funzione' (o se esiste anche).
Se c'è un modo più rubino di gestire qualcosa di simile, sono tutto orecchie. Sono a conoscenza delle classi di patch di scimmia, ma sto cercando di gestire quei casi che sono un po 'più transitori.
[ 'Object # tap'] (http://ruby-doc.org/core-1.9.3/Object.html#method-i-tap) è così vicino, ma doesn' t restituire il valore del blocco ... – maerics
Qualcosa come? m = lambda {| d | d.anno * 100 + d.month} .call (Date.today) – Kaeros
Vedere la risposta di @jondavidjohn. Built in e nessun overhead di binding proc. –