【发布时间】:2014-02-12 20:27:37
【问题描述】:
我正在使用 elixir lang getting started 学习 Elixir 编程,而我正在使用 record brace syntax。
这是示例:
defrecord FileInfo, atime: nil, accesses: 0
defmodule FileAccess do
def was_accessed?(FileInfo[accesses: 0]), do: false
def was_accessed?(FileInfo[]), do: true
end
虽然作者认为 Elixir 在编译时将记录扩展为元组。所以
def was_accessed?(FileInfo[accesses: 0]), do: false
等同于:
def was_accessed?({ FileInfo, _, 0 }), do: false
但是当我输入 Elixir shell 时:
iex(13)> FileInfo[access: 0] == {FileInfo, nil, 0}
true
iex(14)> FileInfo[access: 0] == {FileInfo, 0, 2}
false
结果证明FileInfo[access: 0]只有等于{FileInfo, nil, 0},
不是{ FileInfo, _, 0 }。
这两个场景有什么区别?
【问题讨论】:
标签: elixir