Sui.

Beitrag

Teile dein Wissen.

Owen.
May 31, 2025
Experten Q&A

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 MyCoinals Typparameter für verwendencoin::Coin, und wie kann ich dieses Problem mit der Typprüfung beheben?

  • Sui
  • Architecture
0
2
Teilen
Kommentare
.

Antworten

2
HaGiang.
Jun 1 2025, 03:20

Sie stoßen auf diesen Typprüfungsfehler, weil coin: :Coin erwartet, dass T ein Phantomtyp ist — was bedeutet, dass er nur auf Typebene verwendet und niemals in tatsächlichen Datenstrukturen gespeichert wird. In Ihrem ursprünglichen Code haben Sie MyCoin als normale Struktur ohne Typparameter oder Phantomverwendung definiert. Das widerspricht den Erwartungen an das Coinmodul.

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.

2
Kommentare
.
harry phan.
May 31 2025, 09:45

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.

https://docs.sui.io/references/framework/sui/coin

1
Kommentare
.

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.

306Beiträge450Antworten
Sui.X.Peera.

Verdiene deinen Anteil an 1000 Sui

Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.

BelohnungskampagneJuni
Wir verwenden Cookies, um sicherzustellen, dass Sie die beste Erfahrung auf unserer Website haben.
Mehr Infos