小编Pra*_*ere的帖子

为什么在 Elixir Works 中的 Stream/Enum 模块中模式匹配 Map 与 Tuple?

如果我理解正确的话,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
推荐指数
1
解决办法
132
查看次数

标签 统计

elixir ×1