👨🚀Armazenando Valores
Aqui está como você armazena valores simples no armazenamento:
Tipos Suportados
Os contratos Lunes podem armazenar tipos que são codificáveis e decodificáveis com o Parity Codec, o que inclui a maioria dos tipos de dados comuns do Rust, como bool
, u{8,16,32,64,128}
, i{8,16,32,64,128}
, String
, tuples e arrays.
Além disso, o ink! fornece tipos específicos do Lunes, como AccountId, Balance e Hash, para contratos inteligentes como se fossem tipos primitivos.
String, Vetor e Mais
Como o ink! opera em um ambiente no_std
, precisamos fornecer nossas próprias definições para os tipos de dados incluídos em std
, como String
e Vec
. A crate ink_prelude
oferece essas definições para a maioria dos tipos de dados std
comuns e pode ser usada com segurança em um contrato ink!.
Você pode usar as definições do prelude da seguinte forma:
Mapeamento
O ink! também fornece um tipo de armazenamento chamado Mapping. Você pode ler mais sobre ele aqui.
Lunes Tipos
Aqui está um exemplo de como você armazenaria tipos do Lunes AccountId
, Balance
and Hash
:
Aqui está um exemplo de como você armazenaria os tipos da Lunes AccountId
, Balance
e Hash
:
Enum
Enum também pode ser usado como um tipo de dado. Sua utilização está presente no exemplo na seção "Struct".
Struct
Você pode combinar todos os tipos mencionados acima, inclusive em uma struct
personalizada, que pode ser armazenada no armazenamento do contrato.
Os valores de uma enumeração devem ser referenciados como Status::OpeningPeriod
.
Inicializando o Storage nos Constructors
Os construtores são responsáveis por inicializar os valores. Todo contrato inteligente ink! deve ter um construtor que é executado uma vez quando um contrato é criado. Os contratos inteligentes ink! podem ter vários construtores:
Observe que se você tiver um contrato cujo armazenamento contém Mappings, você precisará usar ink_lang::utils::initialize_contract
em seu construtor. Consulte a documentação do Mapping
para obter mais detalhes.
Last updated