2015-05-28 6 views

Antwort

10

Sie müssen entweder die Felder passen manuell

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 

oder Sie müssen es auf eine Struktur zuerst konvertieren und dann passen die beiden

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

Da Sie mit „AFAIK“ gestartet Ich möchte nur bestätigen, dass diese Antwort vollkommen korrekt ist. :) –

+0

Danke, @ JoséValim hat es entfernt ;-) –