4
我正在學習使用elixir lang getting started的Elixir編程,並且我堆疊了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
雖然筆者認爲藥劑在編譯時的記錄擴大到一個元組。所以
def was_accessed?(FileInfo[accesses: 0]), do: false
是一樣的:
def was_accessed?({ FileInfo, _, 0 }), do: false
但是,當我在藥劑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 }
。
這兩個場景有什麼不同?