Szukam sposobu na "zmapowanie" pojedynczego przedmiotu w Ruby.Mapa Ruby() dla pojedynczego obiektu
Chcę wywołać tę funkcję i przekazać jej blok, obiekt zostanie oddany do bloku, a następnie wynik bloku zostanie zwrócony do osoby dzwoniącej. Dokładnie to, co robi mapa, ale dla pojedynczego elementu.
Motywacją jest to, że czasami generujesz obiekty, które są używane tylko do konstruowania czegoś innego. Oryginalny obiekt nie jest już potrzebny. Byłoby miło po prostu przekształcić konwersję w blok i wyeliminować tymczasowy.
Jako wymyślny przykład załóżmy, że chcę utworzyć liczbę całkowitą reprezentującą kombinację miesiąc/rok. Do dnia dzisiejszego, kod będzie wyglądał mniej więcej tak:
day = Date.today
month_number = day.year * 100 + day.month
bym naprawdę podoba, czy mogę zrobić coś takiego:
month_number = Date.today.some_function { |d| d.year * 100 + d.month }
Ale nie wiem, co jest „some_function” (lub jeśli nawet istnieje).
Jeśli istnieje bardziej Rubinowy sposób radzenia sobie z czymś w tym stylu, jestem uszy. Jestem świadomy klas łatania małp, ale staram się poradzić sobie z przypadkami, które są nieco bardziej przejściowe.
[ 'Obiekt # tap'] (http://ruby-doc.org/core-1.9.3/Object.html#method-i-tap) jest tak blisko, ale nie robi” t zwraca wartość bloku ... – maerics
Coś jak? m = lambda {| d | d.rok * 100 + d.miesiąc} .call (Date.today) – Kaeros
Zobacz odpowiedź @jondavidjohn. Wbudowany i bez obciążenia wiążącego proc. –