여기 [1]에서 설명한대로 가드에서 레코드를 사용하려고합니다. 내가 거기에 설명 된 약식 사용하는 경우 :가드에있는 레코드
handle(Msg, State) when Msg#msg.to==void, Msg#msg.no==3 ->
모두가 잘 ... :
handle(Msg, State) when Msg==#msg{to=void, no=3} ->
을 내가 완전히로 확장하면 ... 나는, 그러나 ... 일치를 얻을 수 없다. 대부분의 erlang 문서와 관련이있는 것으로 보입니다. 잘못 읽었습니까?
덕분에, --tim
[1] - http://www1.erlang.org/doc/reference_manual/records.html#id2278275
단지 추측하지만 첫 번째 : 나는 그것을 다루는 방법은 레코드 이름이어야합니다 레코드의 첫 번째 요소를 테스트하는 것입니다 match는 레코드에 다른 필드가 없거나 다른 모든 필드가 undefined로 설정되어 있다고 가정합니다. msg 레코드에 실패하게하는 다른 필드가있는 경우. –
감사합니다. Jeremy, 그게 다른 가치있는 필드가 있어야합니다, 나는 그들이 의미 상 동일하다고 생각했습니다. 다시 한 번 감사드립니다 ... – Tim
함수 노트에서 패턴 매칭을 사용하여이 작업을 수행 할 수 있습니다. 평등 테스트를했기 때문에 경기가 실패했습니다. 패턴 일치에서 바인딩에 대해 같음 = 및 패턴 =에 대한 시각적 유사성에 의해 트립되었을 수 있습니다. –