Ich bin auf der Suche nach einer Möglichkeit, ein einzelnes Objekt in Ruby zu "mappen".Ruby map() für ein einzelnes Objekt
Ich möchte diese Funktion aufrufen und einen Block übergeben, das Objekt wird dem Block übergeben, und dann wird das Ergebnis des Blocks an den Aufrufer zurückgegeben. Genau was Map tut, aber für ein einzelnes Element.
Die Motivation ist, dass Sie manchmal Objekte generieren, die nur verwendet werden, um etwas anderes zu konstruieren. Das ursprüngliche Objekt wird dann nicht mehr benötigt. Es wäre schön, die Umwandlung einfach in einen Block zu setzen und das Temporäre zu eliminieren.
Als künstliches Beispiel nehmen wir an, dass ich eine ganze Zahl erstellen möchte, die die Kombination von Monat und Jahr darstellt. Für das heutige Datum, würde der Code in etwa so aussehen:
day = Date.today
month_number = day.year * 100 + day.month
Ich mag es würde, wenn ich so etwas wie tun könnte:
month_number = Date.today.some_function { |d| d.year * 100 + d.month }
Aber ich weiß nicht, was ‚some_function‘ ist (oder wenn es überhaupt existiert).
Wenn es etwas mehr Ruby gibt, so etwas zu handhaben, bin ich ganz Ohr. Ich kenne Affenkurs-Klassen, aber ich möchte mit solchen Fällen umgehen, die etwas flüchtiger sind.
[ 'Objekt # tap'] (http://ruby-doc.org/core-1.9.3/Object.html#method-i-tap) ist so nah, aber es doesn‘ t den Wert des Blocks zurückgeben ... – maerics
Etwas wie? m = Lambda {| d | d.year * 100 + d.month} .call (Date.today) – Kaeros
Siehe @jondavidjohns Antwort. Eingebaut und ohne Proc-Bindung. –