functional programming - telecomunicaciones - Advertencias sobre variables no utilizadas en Erlang
erlang tutorial (3)
Recientemente comencé Erlang, y noto que recibo constantemente "Advertencia: la variable X no se usa" durante la compilación. Por ejemplo, tome la siguiente función, que encuentra el elemento máximo en una lista:
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.
El compilador me advierte que en el 3er caso de la función, Head no se usa. ¿Cómo se puede escribir la función sin Head?
Esto debería suprimir la advertencia sin ser confuso:
max(Element,[_Head | Tail]) ->
max(Element, Tail);
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.
Debería hacer el truco. La razón es que reemplazar ''Head'' por ''_'' es sintaxis al decir que un parámetro se colocará allí, pero no lo necesito.
Si nombra una variable _
lugar de Name
(por ejemplo _
lugar de Head
), la variable no se vinculará, y no recibirá una advertencia.
Si nombra una variable _Name
lugar de Name
(por ejemplo, _Head
lugar de Head
), la variable estará vinculada, pero no recibirá una advertencia. Hacer referencia a una variable que comience con _
en el código se considera una práctica muy mala.
Se recomienda mantener el nombre de la variable para mejorar la legibilidad del código (por ejemplo, es más fácil adivinar para qué fue _Head
que simplemente _
).