흐름에 따라 | Изучаем FCL — 3. Как вернуть пользовательское значение из скрипта

7670 단어

크라트키 오브조르



В этом руководстве вы узнаете, как вернуть значение, содержащее несколько других значений, которые не имеют одинакового типа. Для этого мы разберем и используем пользовательскую структуру Cadence Struct.
  • определить пользовательскую структуру в строке скрипта
  • создать вышеупомянутой структуры и использовать его в качестве возвращаемого значения скрипта

  • 💡Лучше учиться с помощью видео? К счастью для вас, есть видео, которое вы можете смотреть вместе с этим руководством. Рассказывает один и единственный разработчик Flow Developer Advocate - !



    콘텐츠 키마징



    https://youtu.be/DWz8Plv5n3k

    Ранее в разделе "Изучение FCL"



    В мы узнали, как передавать аргументы в наш скрипт Cadence. Но если вы помните один из примеров - passMultipleDifferentTypes - мы могли вернуть только одно значение, хотя передавали несколько различнвых типолько различнвых типолько.

    Сегодня я покажу вам, как можно определить пользовательскую структуру в строке скрипта, а затем использовать ее в качествавать вопоп.

    예를 들어! 💪

    Шаг 1 - Установка



    Добавьте "@onflow/fcl": "1.0.0" в качестве зависимости

    Шаг 2 - 나스트로이카



    Как и в прошлый раз импортируем необходимые 방법 및 nasstrаиваем FCL:

    import { query, config } from "@onflow/fcl";
    
    const api = "https://rest-testnet.onflow.org";
    config().put("accessNode.api", api);
    
    


    Шаг 3 - 현실화 방법 fetchCustom



    В строке скрипта разрешается определять новые структуры. Мы создадим одну из них и назовем ее Custom (можно использовать любое имя по своему усмотрению)

    const fetchCustom = async (name) => {
      const cadence = `
        // We will define custom Struct with name Custom :)
        pub struct Custom {
    
          pub let number: Int
          pub let address: Address
    
          // underscore before name of the arguments will allow us to pass values
          // without specifying the name of the arguments, which is usefull when
          // you have only a few of them
    
          init(number: Int, address: Address){
            self.number = number
            self.address = address
          }
        }
    
        pub fun main():Custom {
            // in order to create instance of a struct you use it's name
            // and pass initialization arguments in parentheses
            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}`)
    };
    


    Заключение



    Как всегда, выполним код с помощью IIFE:

    (async () => {
      console.clear();
      await fetchCustom();
    })();
    
    


    В консоли вы должны увидеть следующий результат:

    number field is: 42
    address field is: 0x0000000000001337
    


    Вы потерялись 🤷♂️? Не беспокойтесь 😉 - проверьте полный код на Codesandbox .

    В следующий раз мы применим наши приобретенные навыки и используем.find 배포 계약 для преобразования .find ID 이름 в адрес.

    До следующего раза 👋

    정보 조사



  • 예를 들어 코드 — https://codesandbox.io/s/dev-to-fcl-return-custom-struct-sgywnx

  • 케이던스 구조 — https://docs.onflow.org/cadence/language/composite-types/#composite-type-declaration-and-creation

  • Другие источники, которые могут быть вам полезны:

  • (영어) | Документация Flow - https://docs.onflow.org/ - более детальная информации о блокчейне Flow и как взаимодействовать с ним

  • (영어) | Flow Portal - https://flow.com/ - Flow에 대한 진입점

  • (영어) | FCL JS - https://github.com/onflow/fcl-js - Исходный код и возможность поучаствовать в разработке библиотеки FCL JS 라이브러리

  • (영어) | 케이던스 - https://docs.onflow.org/cadence/

  • Codesandbox - https://codesandbox.io - Замечательная среда разработки и прототипирования прямо в вашем браузере
  • 좋은 웹페이지 즐겨찾기