Skip to content

Instantly share code, notes, and snippets.

@EmaBord
Created September 4, 2023 22:16
Show Gist options
  • Save EmaBord/8eebc568630bf13e06f725add1e6c9ed to your computer and use it in GitHub Desktop.
Save EmaBord/8eebc568630bf13e06f725add1e6c9ed to your computer and use it in GitHub Desktop.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract EjemploFunciones {
uint256 public contador = 0; // Variable de estado publica.
address private owner; // variable de estado internal por defecto
// Constructor: Se ejecuta una vez cuando se despliega el contrato.
constructor() {
owner = msg.sender; // Asigna al creador del contrato como propietario.
}
// 1. Función de Estado: Modifica el estado del contrato.
function incrementar() public {
contador += 1;
}
// 2. Función View: Sólo lee el estado y no lo modifica.
function obtenerContador() public view returns (uint256) {
return contador;
}
// 3. Función Pura: No accede ni modifica el estado, solo trabaja con sus argumentos.
function sumar(uint256 a, uint256 b) public pure returns (uint256) {
return a + b;
}
// 4. Función Payable: Puede recibir Ether.
function depositar() public payable {
require(msg.value > 0, "Debe enviar algo de Ether");
}
// 5a. Función Receive: Se ejecuta cuando se envía Ether sin datos adicionales.
receive() external payable {}
// 5b. Función Fallback: Se ejecuta si ninguna otra función coincide o si los datos enviados no corresponden.
fallback() external {}
// 6. Función Internal: No puede ser llamada desde fuera, útil para lógica interna.
function esPropietario() internal view returns (bool) {
return msg.sender == owner;
}
// 7. Función External: Solo puede ser llamada desde fuera, no desde otras funciones dentro del contrato.
function comprobarPropietario() external view returns (bool) {
return esPropietario(); // Error: una función external no puede llamar a una función internal.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment