Допис
Діліться своїми знаннями.
Помилка перевірки типу при використанні користувацької структури як параметра типу в монеті Sui Move: :Coin?
Питання:
Я стикаюся з помилкою перевірки типу в моєму коді Sui Move, яку я не розумію. Ось спрощена версія мого коду:
module my_module::mymodule {
use sui::coin;
use sui::wallets;
struct MyCoin has drop {}
public fun create_coin(): coin::Coin<MyCoin> {
coin::mint(1000)
}
}
Коли я намагаюся компілювати, я отримую таку помилку:
Invalid type parameter instantiation.
Expected type 'phantom type T' but found 'MyCoin'
Що я роблю неправильно? Чому я не можу використовувати MyCoin
як параметр типу coin::Coin
і як виправити цю проблему перевірки типу?
- Sui
- Architecture
Відповіді
4Ви отримуєте цю помилку перевірки типу, оскільки coin: :Coin
Модуль монет у Sui розроблений так, щоб бути загальним, де тип монети є лише маркером - як етикетка, щоб відрізнити одну монету від іншої. Ось чому він очікує, що тип не буде містити фактичних даних і існуватиме лише для цілей набору тексту.
Ви намагаєтеся використовувати coin: :mint (1000) без належної реєстрації вашого типу монети MyCoin. У Sui Move, перш ніж ви зможете карбувати власну монету, вам потрібно визначити та зареєструвати її за допомогою функції create_currency.
Ви отримуєте помилку, оскільки 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)
}
}
Ви намагаєтеся використовувати свій власний MyCoin як аргумент типу для coin: :Coin
Invalid type parameter instantiation. Expected type 'phantom type T' but found 'MyCoin'
Простіше кажучи, це означає: coin: :Coin
Отже, якщо ваш тип не оголошений так:
phantom struct MyCoin has store, drop {}
Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Зароби свою частку з 1000 Sui
Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

- ... SUIBigSneh+1396
- ... SUISuiLover+1333
- ... SUI0xduckmove+1207
- ... SUIThorfin+1202
- ... SUIOwen+970
- ... SUIharry phan+847
- ... SUItheking+742
- Чому BCS вимагає точного порядку полів для десеріалізації, коли структури Move мають названі поля?53
- Помилки перевірки кількох джерел» у публікаціях модуля Sui Move - автоматичне вирішення помилок43
- Невдала операція Sui: об'єкти, зарезервовані для іншої транзакції25
- Як обмеження здібностей взаємодіють з динамічними полями в гетерогенних колекціях?05