如果我理解正确的话,elixir 中的元组用 表示,{}而Maps表示为键:值对,%{key: value}.
在以下代码中,Stream.filterandEnum.map接受entries作为输入,即 aMap并对其进行迭代。
但是lambda它们内部的函数正在做一个模式匹配,{_, entry}它是一个tuple. 这是怎么回事?
defmodule TodoList do
defstruct auto_id: 1, entries: %{}
def new(), do: %TodoList{}
def add_entry(todo_list, entry) do
entry = Map.put(entry, :id, todo_list.auto_id)
new_entries = Map.put(
todo_list.entries,
todo_list.auto_id,
entry)
%TodoList{todo_list |
entries: new_entries,
auto_id: todo_list.auto_id + 1
}
end
def entries(todo_list, date) do
todo_list.entries
|> Stream.filter(fn {_, entry} -> entry.date == …Run Code Online (Sandbox Code Playgroud) elixir ×1