2015-05-28 11 views
8

Bir yapının, bir yapının karşısındaki bir kayıtla eşleşmesi için bir yol var mı? Aşağıda bir kayıt ve bir yapı verilmiştir.Desen Eşleme Elixir Kaydı Aganist Yapı

struct = %User{name: "", twitter:""} 
record = {User, "mossplix ", "@mossplix"} 

cevap

10

Ya alanları elle

defmodule Test do 
    def foo(%User{name: name, twitter: twitter}, {User, name, twitter}) do 
    IO.puts "match :)" 
    end 

    def foo(_struct, _record) do 
    IO.puts "no match :(" 
    end 
end 

eşleşmesi gerekir yoksa siz "AFAIK" ile başladığından beri iki

defmodule Test do 
    def foo(struct, record) do 
    do_foo struct, user_record_to_struct(record) 
    end 

    defp user_record_to_struct({User, name, twitter}) do 
    %User{name: name, twitter: twitter} 
    end 

    defp do_foo(struct, struct) do 
    IO.puts "match :)" 
    end 

    defp do_foo(_struct1, _struct2) do 
    IO.puts "no match :(" 
    end 
end 
+4

maç sonra yapı ilk dönüştürmek ve gerek Sadece bu cevabın kusursuz olduğunu doğrulamak istiyorum. :) –

+0

Teşekkürler, @ JoséValim kaldırıldı ;-) –