Lasst uns den folgenden Ausdruck in Elixir sehen:Elixir: Verwendung `: into` für Bereich Generator (Zahlen)
iex> for n <- 1..30, rem(n, 3) == 0, do: n * 10
[30, 60, 90, 120, 150, 180, 210, 240, 270, 300]
Ich versuchte :into
optional mit ihnen zusammenzufassen, aber es ist fehlgeschlagen:
# expect to get `1650` from `[30, 60, 90, 120, 150, 180, 210, 240, 270, 300]`
iex> for n <- 1..30, rem(n, 3) == 0, into: 0, do: n * 10
** (Protocol.UndefinedError) protocol Collectable not implemented for 0
(elixir) lib/collectable.ex:1: Collectable.impl_for!/1
(elixir) lib/collectable.ex:46: Collectable.into/1
Ist es möglich, :into
zu verwenden, um die Ergebnisse von aufgezählten Zahlenwerten zu kombinieren?
Wenn ja, wie?
Es klingt eher wie würden Sie brauchen, [ 'Enum.reduce/2'] (https://hexdocs.pm/elixir/Enum.html#reduce/2), na ja, _reduce_ Liste von ganzen Zahlen in eine ganze Zahl ... –
Bedenken Sie: '1..30 |> Enum.filter (fn n -> rem (n, 3) == 0 Ende) |> Enum.reduce (0, fn n, acc -> acc + n * 10 Ende) ' –