---
title: "¿Qué son las funciones de Solidity?"
description: "Tipos de funciones de Solidity: View, Pure, Special, Fallback y visibilidad de funciones"
---

# ¿Qué son las funciones de Solidity?

Existen múltiples tipos de funciones de [Solidity](https://www.alchemy.com/overviews/solidity), entre ellas las funciones view, funciones pure, funciones especiales y funciones fallback. Las funciones también pueden modificarse con un atributo de visibilidad de función: public, external, internal y private. Este artículo presentará los tipos de funciones de Solidity, su sintaxis, cómo leer funciones y la visibilidad.

## **¿Qué son las funciones de Solidity?**

**Las funciones de Solidity son módulos de código autocontenidos que cumplen una tarea específica.** Al igual que otros [lenguajes de programación de web3](https://www.alchemy.com/overviews/web3-programming-languages), Solidity permite al desarrollador escribir código modular usando funciones para eliminar la redundancia de reescribir el mismo fragmento de código. En su lugar, los desarrolladores pueden llamar a una función en el programa cuando sea necesario.

## **Cómo escribir y leer una función de Solidity**

Para escribir una función de Solidity, los desarrolladores necesitan estructurarla según su sintaxis correspondiente, asegurándose de escribir sus componentes básicos para que la función pueda ejecutarse correctamente.

### **Sintaxis de una función de Solidity**

Usa la siguiente sintaxis para crear tu función de Solidity, como se ve en el ejemplo a continuación:

1. Define la función con la palabra clave function
1. Crea un nombre para la función, que sea único y no coincida con ninguna de las palabras clave reservadas
1. Lista los parámetros incluyendo el nombre y el tipo de dato de cada parámetro, o no incluyas parámetros adicionales
1. Crea un bloque de instrucciones rodeado por llaves

Nota: los [eventos de Solidity](https://www.alchemy.com/overviews/solidity-events) se declaran de forma similar a las funciones. Los eventos y las funciones son ambos fundamentales para el trabajo de dApps de alto nivel.

La siguiente imagen muestra los tres componentes principales de una función de Solidity:

1. Nombre de la función
1. Tipo de función
1. Tipos de retorno

<ImageBlock
  src="https://media.alchemy.com/1703927821-example-of-a-function-in-solidity.png"
  alt="Un ejemplo de una función en Solidity"
  width={960}
  height={540}
  caption="Un ejemplo de una función en Solidity"
/>

## **¿Cuáles son los diferentes tipos de funciones de Solidity?**

**Existen varios tipos de funciones de Solidity que cubriremos en esta sección**, entre ellas las funciones view, funciones pure, funciones especiales y funciones fallback.

### **1. Funciones view**

En Solidity, las funciones view son de solo lectura y no pueden alterar las variables de estado definidas en un contrato inteligente. La sintaxis de una función view es la siguiente:

### **2. Funciones pure**

Una función pure declara que ninguna variable de estado será modificada ni leída. Por lo general, las funciones pure cumplen alguna utilidad o cálculo común. La sintaxis de una función pure es la siguiente:

### **3. Funciones especiales**

Solidity tiene un par de funciones especiales que puedes usar al desarrollar un contrato inteligente. Las funciones getter y receive son [funciones payable](https://www.alchemy.com/docs/solidity-payable-functions) importantes para los contratos inteligentes en Solidity.

#### **Función getter**

Las variables de estado definidas como public tienen una función getter que el compilador crea automáticamente. La función tiene el mismo nombre que la variable y tiene visibilidad external.

#### **Función receive ether**

Un contrato puede tener como máximo una función receive. Una función receive no puede tener argumentos, no puede retornar valores, y debe tener visibilidad external y mutabilidad de estado payable.

Una función receive se ejecuta al llamar al contrato enviando Ether sin especificar ninguna función. Esta función se declara de la siguiente manera:

### **4. Función fallback**

En Solidity, una función fallback es una función external sin nombre, argumentos ni valores de retorno. Las funciones fallback se ejecutan cuando un identificador de función no coincide con ninguna de las funciones disponibles en un contrato inteligente, o si no se proporcionaron datos junto con la llamada a la función.

### **¿Qué es la sobrecarga de funciones?**

La sobrecarga de funciones ocurre cuando tienes múltiples definiciones para el mismo nombre de función dentro del mismo alcance. La definición de la función debe diferir entre sí por los tipos y/o la cantidad de argumentos en la lista de argumentos. No puedes sobrecargar declaraciones de funciones que difieran únicamente por el tipo de retorno.

#### **¿Cómo maneja Vyper la sobrecarga de funciones de forma diferente a Solidity?**

A diferencia de Solidity, Vyper, un [lenguaje pythonico basado en Solidity](https://www.alchemy.com/overviews/solidity-vs-vyper), no permite la sobrecarga de funciones. Intentar hacer sobrecarga de funciones en Vyper resultará en un error de "Duplicate function or event name".

## **¿Qué significa la visibilidad de una función?**

Especificar la visibilidad de una función nos permite [**controlar qué entidades pueden llamar a las funciones**](https://www.alchemy.com/university/courses/ethereum?a=703dc50260) dentro del contrato inteligente. Existen tres tipos de llamadores:

1. El contrato principal
1. Un contrato derivado (es decir, que hereda) del contrato principal
1. Un tercero

La visibilidad de función te ayuda a controlar cuál de los llamadores mencionados puede ejecutar la función. Existen cuatro tipos de visibilidad de función:

1. Public
1. External
1. Internal
1. Private

La accesibilidad de las funciones disminuye de External a Private: las funciones public son las más accesibles y las funciones private son las menos accesibles.

### External vs. public

External y public son las dos visibilidades de función que pueden llamarse desde fuera del contrato en el que están definidas. External significa que la función solo puede ser llamada por otros contratos o por cuentas de propiedad externa (EOA). Public significa que la función puede llamarse externamente o desde dentro del propio contrato.

### **Internal vs. private**

A diferencia de external y public, tanto internal como private impiden que terceros externos accedan a la función. Para una función private, solo pueden llamarla funciones dentro del mismo contrato. Para una función internal, pueden llamarla funciones dentro del mismo contrato o funciones dentro de contratos derivados.

## **Sigue aprendiendo sobre las funciones de Solidity**

Este artículo te ha presentado las funciones en Solidity. Para seguir aprendiendo, inscríbete en el [**Bootcamp de Desarrollador de Ethereum de Alchemy University**](https://www.alchemy.com/university/courses/ethereum?a=703dc50260), y obtén acceso a un curso intensivo de Solidity gratuito y asíncrono de 7 semanas. Si los desarrolladores son nuevos en el desarrollo en general, el [**curso intensivo de JavaScript de 3 semanas**](https://www.alchemy.com/university/courses/js) de Alchemy University es un excelente prerrequisito antes de comenzar un bootcamp de Ethereum.
