2017-03-09 15 views
2

나는 함수의 인자가 0인지 확인하는 Erlang에 is_zero이라는 간단한 함수를 작성했습니다. 코드는 다음과 같습니다. Erlang의 패턴 매칭은 변수가 사용되지 않는다는 경고를 던집니다.

-module(match). 

-export([is_zero/1]). 

% defining a function named is_zero 

% this is a function with two clauses 

% these clauses are matched sequentially 

is_zero(0) -> 
    true; 
is_zero(X) -> 
    false. 

내가 (파일도 match.erl로 이름)이 variable "X" is unused 말하는 경고를 반환 c(match).를 사용하여 코드를 컴파일하려고으로

.

내가 경고에도 불구하고 is_zero(0).를 실행하는 경우, 쉘은 내가 잘못 뭐하는 거지 undefined shell command is_zero/1

라고 예외 오류가 발생합니다?

어떤 수정도 생각할 수 없으며 도움이되는 조언을 찾을 수 없습니다.

답변

3

얼랑의 함수는 modules 안에 정의되어 있습니다. 함수를 다른 모듈과 구별하려면 함수 앞에 모듈 이름을 추가해야합니다. 이 경우 is_zero(0). 대신 match:is_zero(0).을 실행해야합니다.

variable "X" is unused 말하는 경고를 피하기 밑줄 변수를 사용하려면 변수 이름도 사용하지 않는 경우, 가독성을 향상시키기 위해 유용 할 수 있음을

is_zero(_) -> 
    false. 

참고. 변수의 이름을 지정하고 컴파일러 경고를 피하려면 이름에 밑줄을 앞에 붙입니다.

is_zero(_Num) -> 
    false.