DEV Community

Bruno Gonzales for Flow Blockchain

Posted on

Construye en Flow: Aprende FCL - 3. Como retornar valores arbitrarios desde un script

Esta es una traducción al español del tercer artículo de la serie Build on Flow | Learn FCL escrita por Maksimus Starka.

Vista previa

En esta guía aprenderás como retornar un valor que contenga multiples otros valores que no son del mismo tipo. Haremos esto definiendo y usando structs en Cadence, es decir:

  • definiendo un Struct en el cuerpo del script.
  • creando una instancia del mencionado Struct y usándolo como valor de retorno del script.

Previamente en “Aprende FCL”

En el post pasado, aprendimos como pasar argumentos a nuestro script en Cadence. Si recordamos el ejemplo passMultipleDifferentTypes podíamos retornar un valor único, a pesar de que pasábamos tipos de valor diferentes.

Hoy te mostraré como definir un Struct personalizado en el cuerpo de tu script para poder usarlo como valor de retorno.

Empecemos! 💪

Paso 1 - Instalación

Agrega "onflow/fcl": "1.0.0" como tu dependencia

Paso 2 - Configuración

Como la última vez, importaremos los métodos necesarios para configurar FCL:

import { query, config } from "@onflow/fcl";

const api = "https://rest-testnet.onflow.org";
config().put("accessNode.api", api);
Enter fullscreen mode Exit fullscreen mode

Paso 3 - Implementando el método fetchCustom

const fetchCustom = async (name) => {
  const cadence = `
    // Este script te permite definir Structs personalizados en su cuerpo. 
        // Crearemos uno y lo llamaremos Custom (puedes usar cualquier nombre que quieras)
    pub struct Custom {
      pub let number: Int
      pub let address: Address

      init(number: Int, address: Address){
        self.number = number
        self.address = address
      }
    }

    pub fun main():Custom {
            // para crear una instancia del struct usa su nombre
            // y pásale los argumentos de inicializacion entre paréntesis
            let t = Custom(number: 42, address: 0x1337)
      return t
    }
  `;

  const custom = await query({ cadence });

  const { number, address } = custom;
    console.log(`number field is ${number}`)
    console.log(`address field is ${address}`)
};
Enter fullscreen mode Exit fullscreen mode

Finalmente

Como siempre , ejecutamos el código con una IIFE:

(async () => {
  console.clear();
  await fetchCustom();
})();
Enter fullscreen mode Exit fullscreen mode

Deberías ver el siguiente resultado en la consola:

number field is: 42
address field is: 0x0000000000001337
Enter fullscreen mode Exit fullscreen mode

Te perdiste? Puedes revisar el código completo en este Codesandbox.

Hasta la próxima 👋

Recursos

Otros recursos que te podrían ser útil:

Top comments (0)