我在Erlang中编写了一个名为is_zero
的简单函数,它检查函数的参数是否为零。代码如下。
-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.
当我尝试使用c(match).
编译代码时(该文件也被命名为match.erl),它会返回一条警告variable "X" is unused
。
如果我尽管发出警告仍然运行is_zero(0).
,那么shell会抛出异常错误,说undefined shell command is_zero/1
我做错了什么?
我想不出任何纠正,我也找不到任何有用的建议。
答案 0 :(得分:3)
Erlang中的函数在modules中定义。要区分不同模块的功能,需要将模块名称添加到功能中。在这种情况下,您需要运行match:is_zero(0).
而不仅仅是is_zero(0).
。
要避免出现variable "X" is unused
的警告,请使用下划线变量:
is_zero(_) ->
false.
请注意,即使未使用变量名称也很有用,以提高可读性。如果要为变量命名并仍然避免编译器警告,请在下面添加下划线名称:
is_zero(_Num) ->
false.