Я изучаю программирование Elixir с помощью elixir lang getting started, и я укладываю record brace syntax
.Использование синтаксиса кронштейна в записи Elixir
Это образец:
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:
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 }
.
В чем разница между этими двумя сценами?