【问题标题】:Why/When does erl give a Warning: obsolete message?erl 为什么/何时给出警告:过时消息?
【发布时间】:2016-02-16 01:14:51
【问题描述】:

我在 list.erl 中有以下代码:

-module(list).
-export([average/1]).

average(X) when list(X) -> sum(X) / len(X).

sum([H|T]) -> H + sum(T);
sum([]) -> 0.

len([_|T]) -> 1 + len(T);
len([]) -> 0.

erl shell 中加载此模块会给出警告消息。

Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> c(list).
list.erl:4: Warning: list/1 obsolete
{ok,list}
2>

何时/为什么会发生这种情况?谢谢。

【问题讨论】:

    标签: erlang erl


    【解决方案1】:

    你需要使用@is_list(X)@@@。

    -module(list).
    -export([average/1]).
    
    average(X) when is_list(X) -> sum(X) / len(X).
    
    sum([H|T]) -> H + sum(T);
    sum([]) -> 0.
    
    len([_|T]) -> 1 + len(T);
    len([]) -> 0.
    

    【讨论】:

    • 谢谢,成功了。我关注this 并搜索此错误没有帮助。
    • 我猜在早期版本的 Erlang Guard 中是 list(),为了兼容而保留,但已弃用。
    • 确实如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2011-06-06
    • 2022-10-14
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多