Erlang 中未使用变量的警告

发布于 2024-07-10 01:40:51 字数 392 浏览 8 评论 0原文

我最近启动了 Erlang,我注意到在编译时不断收到“警告:变量 X 未使用”。 例如,采用以下函数,该函数查找列表中的最大元素:

    max([Head|Tail]) ->
       max(Head,Tail).

    max(Element,[Head | Tail]) when Element < Head ->
       max(Head,Tail);
    max(Element,[Head | Tail]) ->
       max(Element, Tail);
    max(Element,[]) ->
       Element.

编译器警告我,在函数的第三种情况下,Head 未使用。 没有Head怎么写函数呢?

I recently started Erlang, and I notice I constantly get "Warning: variable X is unused" while compiling. For example, take the following function, which finds the maximum element in a list:

    max([Head|Tail]) ->
       max(Head,Tail).

    max(Element,[Head | Tail]) when Element < Head ->
       max(Head,Tail);
    max(Element,[Head | Tail]) ->
       max(Element, Tail);
    max(Element,[]) ->
       Element.

The compiler warns me that in the 3rd case of the function, Head is unused. How can the function be written without Head?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅暮の光 2024-07-17 01:40:54
    max([Head|Tail]) ->
       max(Head,Tail).

    max(Element,[Head | Tail]) when Element < Head ->
       max(Head,Tail);
    max(Element,[_| Tail]) ->
       max(Element, Tail);
    max(Element,[]) ->
       Element.

应该做到这一点。 原因是用“_”替换“Head”是表示参数将放置在那里的语法,但我不需要它。

    max([Head|Tail]) ->
       max(Head,Tail).

    max(Element,[Head | Tail]) when Element < Head ->
       max(Head,Tail);
    max(Element,[_| Tail]) ->
       max(Element, Tail);
    max(Element,[]) ->
       Element.

Should do the trick. The reason being that replacing 'Head' with '_' is syntax for saying that a parameter will be placed there, but I don't need it.

蓝眼泪 2024-07-17 01:40:53

这应该会抑制警告而不引起混淆:

max(Element,[_Head | Tail]) ->
   max(Element, Tail);

This should suppress the warning without being confusing:

max(Element,[_Head | Tail]) ->
   max(Element, Tail);
伏妖词 2024-07-17 01:40:52

如果您将变量命名为 _ 而不是 Name(例如 _ 而不是 Head),则该变量将不会被绑定,并且您不会收到警告。

如果您将变量命名为 _Name 而不是 Name(例如 _Head 而不是 Head),则变量 被绑定,但你仍然不会收到警告。 在代码中引用以 _ 开头的变量被认为是非常不好的做法。

建议保留变量的名称以提高代码的可读性(例如,比 _ 更容易猜测 _Head 的用途)。

If you name a variable _ instead of Name (e.g. _ instead of Head) the variable will not be bound, and you will not get a warning.

If you name a variable _Name instead of Name (e.g. _Head instead of Head) the variable will be bound, but you will still not get a warning. Referencing a variable beginning with _ in the code is considered very bad practice.

It is recommended to keep the name of the variable to improve the readability of the code (e.g. it is easier to guess what _Head was intended for than just _).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文