¿Qué significa "_" antes del nombre de una variable?

Soy un principiante, recientemente comencé a leer los documentos de Solidity.
Parece que no puedo encontrar esto en ninguna parte de Google. ¿Qué significa el guión bajo cuando se coloca con la indexedpalabra clave? Ejemplos: ¿
_from
_id
_amount
_account
En qué se diferencian de otras variables y cómo se usan en los eventos?

Nada especial, solo una convención de codificación. Por ejemplo, puede decidir usarlo para cada variable local local en su código. Por cierto, no se recomienda en ninguna parte de la Guía de estilo de Solidity .

Respuestas (2)

No tiene sentido en lo que respecta a la Solidez.

Algunos programadores eligen usar un guión bajo inicial para todos los parámetros de función, solo como una convención para indicar que son parámetros de función.

También se utilizan a menudo para evitar colisiones, por ejemplo:

uint256 totalSupply;

constructor(uint256 _totalSupply) public {
    totalSupply = _totalSupply;
}

Allí, llamar al parámetro totalSupplysombrearía la variable de estado existente totalSupply, por lo que se usa el guión bajo inicial para evitar la colisión de nombres.

¿Funciona esto para la solidez 0.6.2?
sí. Es simplemente una convención ^

Solo para agregar un poco más de contexto, como lo indicó otra persona en los comentarios, no encontrará ninguna mención del guión bajo inicial en la guía de estilo.

Sin embargo, puede encontrar una recomendación para usar un guión bajo al final para evitar la colisión de nombres .

Esta convención se sugiere cuando el nombre deseado colisiona con el de una variable de estado existente, función, nombre incorporado o reservado de otro modo.

En cuanto a por qué se usa en Solidity, como ejemplo en Javascript, el guión bajo inicial se usa como una convención para falsificar la encapsulación e indicar que un nombre específico está protegido.

En C# indica que un nombre de campo es privado .

Así que supongo que hay una tendencia general a usar el guión bajo inicial para indicar que un nombre está reservado solo para uso interno.