Я создавал оператор case и достиг случая, когда я подумал, что было бы неплохо / применимо сделать сравнение соответствия шаблонов . Я не могу найти что-нибудь в Интернете об этом. Возьмите следующий гипотетический пример:
person = %Person{first_name: "Test", last_name: "example}
person2 = %Person{first_name: "another", last_name: "person"}
case list do
[] ->
:empty
[person, person2] == [%Person{} | _] ->
:true
[_] ->
:no_Person_struct
end
Конечно, это будет проверять только заголовок списка, но есть ли что-нибудь подобное или способ сделать это?
Также отрицание этого было бы неплохо, если это возможно. т.е. * +1008 *
[person, person2] == [%NotAPerson{} | _] == false -> :true
Синтаксис, скорее всего, неверен.
РЕДАКТИРОВАТЬ: Как насчет сопоставления с образцом в аргументах по крайней мере?
def([%Person{} | _] = people) do