我正在使用elixir lang 开始学习 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 }
。
这两个场景有什么区别?