2011-04-22 5 views
1

나는 다음 한 코드 :얼랑 기록 발현 무시 경고

Check#tab_info{login_errors = 0}, 
    {ok, PID}; 

하지만 난 그것을 컴파일하려고 할 때 경고 얻을 : (식의 결과를 무시

을 할당하여 경고를 억제 _ 변수에 표현)

무엇이 잘못 되었습니까? 어떻게 해결할 수 있습니까?

감사합니다.

답변

9

글쎄, 컴파일러는 정확히 무엇이 잘못되었는지를 알려주고 있습니다. : #tab_info 레코드를 새로 만들지 만, 어떤 변수에도 바인드하지 마십시오. 따라서 코드는 의미가 없으며 컴파일러에서 알려줍니다. Check 변수를 변경하면 (또는 올바르게 새 변수를 만드는 경우) 변수를 반환하지 않으면 아무 효과가 없습니다. Check은 명령형 언어처럼 전역 변수가 아닙니다. 또한 인수로받은 변수를 함수로 변경해도 호출자가 변수를 보는 방법이 변경되지는 않습니다.

표현식을 변수에 바인딩 한 다음 의미있는 결과를 얻으려고합니다. 당신이 함수 호출을했고 아무것도 반환 값을 결합하지 않은 대신하는 경우 함수가 부작용이있을 수 있습니다으로 보조 노트로

NewCheck = Check#tab_info{...} 
{ok, Pid, NewCheck} 

는, 컴파일러는 불평하지 것이며, 이것은 당신이라는 이유가 될 수있다 처음에 함수.