Implementiere die accumulate-Operation: Sie bekommt eine Sammlung und eine Operation, die auf jedes Element der Sammlung angewendet wird, und gibt eine neue Sammlung zurück, die das Ergebnis der Anwendung dieser Operation auf jedes Element der Eingabesammlung enthält.
Gegeben sei die Sammlung von Zahlen:
Und die Operation:
x => x * x)Dein Code sollte in der Lage sein, die Sammlung der Quadrate zu erzeugen:
Schau dir die Testsuite an, um die erwartete Funktionssignatur zu sehen.
Lass die Finger von dieser collect/map/fmap/wie-auch-immer-Funktionalität, die deine Standardbibliothek bietet! Löse diese Aufgabe stattdessen selbst mit anderen grundlegenden Mitteln.
Wenn du Methoden für ein generisches Enumerable definierst, ist es üblich, #to_enum aufzurufen, falls kein Block übergeben wird.
Hier ist ein zusätzlicher Test, den du hinzufügen könntest:
def test_accumulate_when_block_is_deferred
skip
accumulate_enumerator = [1, 2, 3].accumulate
accumulated_result = accumulate_enumerator.map do |number|
number * number
end
assert_equal [1, 4, 9], accumulated_result
end
Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.