Publication
Partagez vos connaissances.
Erreur de vérification de type lors de l'utilisation d'une structure personnalisée comme paramètre de type dans coin : :Coin ?
Question :
Je rencontre une erreur de vérification de type dans mon code Sui Move que je ne comprends pas. Voici une version simplifiée de mon code :
module my_module::mymodule {
use sui::coin;
use sui::wallets;
struct MyCoin has drop {}
public fun create_coin(): coin::Coin<MyCoin> {
coin::mint(1000)
}
}
Lorsque j'essaie de compiler, j'obtiens l'erreur suivante :
Invalid type parameter instantiation.
Expected type 'phantom type T' but found 'MyCoin'
Qu'est-ce que je fais mal ? Pourquoi ne puis-je pas l'utiliser MyCoin
comme paramètre de type pour coin::Coin
et comment puis-je résoudre ce problème de vérification de type ?
- Sui
- Architecture
Réponses
2Vous rencontrez cette erreur de vérification de type car coin : :Coin
Le module de monnaie de Sui est conçu pour être générique, le type de pièce étant simplement un marqueur, comme une étiquette permettant de distinguer une pièce d'une autre. C'est pourquoi il s'attend à ce que le type ne contienne aucune donnée réelle et n'existe qu'à des fins de saisie.
Vous essayez d'utiliser coin : :mint (1000) sans enregistrer correctement votre type de pièce personnalisé MyCoin. Dans Sui Move, avant de pouvoir frapper une pièce personnalisée, vous devez la définir et l'enregistrer à l'aide de la fonction create_currency.
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.