Beitrag
Teile dein Wissen.
Fehler bei der Typprüfung, wenn eine benutzerdefinierte Struktur als Typparameter in coin: :Coin von Sui Move verwendet wird?
Frage:
In meinem Sui Move-Code tritt bei der Typprüfung ein Fehler auf, den ich nicht verstehe. Hier ist eine vereinfachte Version meines Codes:
module my_module::mymodule {
use sui::coin;
use sui::wallets;
struct MyCoin has drop {}
public fun create_coin(): coin::Coin<MyCoin> {
coin::mint(1000)
}
}
Wenn ich versuche zu kompilieren, erhalte ich die folgende Fehlermeldung:
Invalid type parameter instantiation.
Expected type 'phantom type T' but found 'MyCoin'
Was mache ich falsch? Warum kann ich ihn nicht MyCoin
als Typparameter für verwendencoin::Coin
, und wie kann ich dieses Problem mit der Typprüfung beheben?
- Sui
- Architecture
Antworten
4Sie stoßen auf diesen Typprüfungsfehler, weil coin: :Coin
Das Münzmodul in Sui ist generisch gestaltet, wobei der Münztyp nur eine Markierung ist — wie ein Etikett, um eine Münze von einer anderen zu unterscheiden. Deshalb wird erwartet, dass der Typ keine tatsächlichen Daten enthält und nur zu Tippzwecken existiert.
Sie versuchen, coin: :mint (1000) zu verwenden, ohne Ihren benutzerdefinierten Münztyp MyCoin ordnungsgemäß zu registrieren. Bevor Sie in Sui Move eine benutzerdefinierte Münze prägen können, müssen Sie sie mithilfe der Funktion create_currency definieren und registrieren.
Sie erhalten den Fehler, weil 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)
}
}
Sie versuchen, Ihr benutzerdefiniertes MyCoin als Typargument für coin: :Coin zu verwenden
Invalid type parameter instantiation. Expected type 'phantom type T' but found 'MyCoin'
Das bedeutet im Klartext: coin: :Coin
Also, es sei denn, dein Typ ist so deklariert:
phantom struct MyCoin has store, drop {}
Weißt du die Antwort?
Bitte melde dich an und teile sie.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Verdiene deinen Anteil an 1000 Sui
Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.

- ... SUIBigSneh+1396
- ... SUISuiLover+1333
- ... SUI0xduckmove+1207
- ... SUIThorfin+1202
- ... SUIOwen+970
- ... SUIharry phan+847
- ... SUItheking+742
- Warum benötigt BCS eine genaue Feldreihenfolge für die Deserialisierung, wenn Move-Strukturen benannte Felder haben?53
- Fehler bei der Überprüfung mehrerer Quellen“ in den Veröffentlichungen des Sui Move-Moduls — Automatisierte Fehlerbehebung43
- Sui-Transaktion schlägt fehl: Objekte sind für eine andere Transaktion reserviert25
- Wie interagieren Fähigkeitsbeschränkungen mit dynamischen Feldern in heterogenen Sammlungen?05