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
4Vous 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.
Vous obtenez l'erreur car sui : :coin : :Coin
module my_module::mymodule {
use sui::coin;
struct MyCoin has drop, store {} // add `store` because it's often required
phantom struct PhantomMyCoin has drop, store {}
public fun create_coin(): coin::Coin<PhantomMyCoin> {
coin::mint<PhantomMyCoin>(1000)
}
}
Vous essayez d'utiliser votre MyCoin personnalisé comme argument de type pour coin : :Coin
Invalid type parameter instantiation. Expected type 'phantom type T' but found 'MyCoin'
En termes clairs, cela signifie que coin : :Coin
Donc, à moins que votre type ne soit déclaré comme ceci :
phantom struct MyCoin has store, drop {}
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Gagne ta part de 1000 Sui
Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

- ... SUIBigSneh+1396
- ... SUISuiLover+1333
- ... SUI0xduckmove+1207
- ... SUIThorfin+1202
- ... SUIOwen+970
- ... SUIharry phan+847
- ... SUItheking+742
- Pourquoi BCS exige-t-il un ordre de champs exact pour la désérialisation alors que les structures Move ont des champs nommés ?53
- « Erreurs de vérification de sources multiples » dans les publications du module Sui Move - Résolution automatique des erreurs43
- Échec de la transaction Sui : objets réservés pour une autre transaction25
- Comment les contraintes de capacité interagissent-elles avec les champs dynamiques dans des collections hétérogènes ?05