【发布时间】:2012-05-22 22:33:44
【问题描述】:
我很难理解以下 erlang 代码
-module(threesix).
-export([quicksort/1]).
quicksort(Pivot, Left, Right, []=_Src) ->
{Left, Pivot, Right};
quicksort(Pivot, Left, Right, [H|T]=_Src) when H < Pivot ->
quicksort(Pivot, [H|Left], Right, T);
quicksort(Pivot, Left, Right, [H|T]=_Src) ->
quicksort(Pivot, Left, [H|Right], T).
quicksort([]) ->
[];
quicksort([H|T]=_List) ->
{Left, Pivot, Right} = quicksort(H, [], [], T),
quicksort(Left) ++ [Pivot] ++ quicksort(Right).
我具体说的是参数中_Src和_List的使用。
这些只是为了文档,因为我看不出为什么要使用它们吗?
【问题讨论】:
-
正如 sepp2k 所说,它们没有被使用,这些是匿名(无关)变量,因此您可以省略它们。
-
@Yasir,这并不完全正确,变量名开头的 _ 只是告诉编译器禁止该变量的未使用变量警告。它仍然是一个常规变量并且可以使用,但可能不应该使用,除非 _ 被删除。如果您真的不关心它们并且永远不会使用它们,那么只需使用 _ 。最近在邮件列表中有一个非常有趣的主题 [thread.gmane.org/gmane.comp.lang.erlang.general/43491/…
-
重要的是要区分变量
_哪个是 无关变量和以_开头的变量实际上是正常变量并且可以被这样使用。如果不使用它们,编译器不会发出警告,有些人使用它们来“注释”他们的代码。正如@fuzzy 给出的链接所示,我不喜欢这样,也从不使用它们。
标签: erlang