Created
September 4, 2023 22:16
-
-
Save EmaBord/8eebc568630bf13e06f725add1e6c9ed to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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