Bài viết
Chia sẻ kiến thức của bạn.
Lỗi kiểm tra kiểu khi sử dụng cấu trúc tùy chỉnh làm tham số kiểu trong đồng xu của Sui Move: :Coin?
Câu hỏi:
Tôi gặp lỗi kiểm tra loại trong mã Sui Move mà tôi không hiểu. Đây là một phiên bản đơn giản của mã của tôi:
module my_module::mymodule {
use sui::coin;
use sui::wallets;
struct MyCoin has drop {}
public fun create_coin(): coin::Coin<MyCoin> {
coin::mint(1000)
}
}
Khi tôi cố gắng biên dịch, tôi gặp lỗi sau:
Invalid type parameter instantiation.
Expected type 'phantom type T' but found 'MyCoin'
Tôi đang làm gì sai? Tại sao tôi không thể sử dụng MyCoin
làm tham số kiểu coin::Coin
và làm cách nào để khắc phục sự cố kiểm tra loại này?
- Sui
- Architecture
Câu trả lời
4Bạn gặp phải lỗi kiểm tra kiểu này vì coin: :Coin
Mô-đun tiền xu trong Sui được thiết kế để mang tính chung chung, trong đó loại tiền xu chỉ là một điểm đánh dấu - giống như một nhãn để phân biệt đồng tiền này với đồng tiền khác. Đó là lý do tại sao nó mong đợi loại không mang dữ liệu thực tế và chỉ tồn tại cho mục đích gõ.
Bạn đang cố gắng sử dụng coin: :mint (1000) mà không cần đăng ký chính xác loại coin tùy chỉnh MyCoin của bạn. Trong Sui Move, trước khi bạn có thể đúc một đồng tiền tùy chỉnh, bạn cần xác định và đăng ký nó bằng hàm create_currency.
Bạn đang gặp lỗi vì 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)
}
}
Bạn đang cố gắng sử dụng MyCoin tùy chỉnh của mình làm đối số kiểu cho coin: :Coin
Invalid type parameter instantiation. Expected type 'phantom type T' but found 'MyCoin'
Điều này có nghĩa đơn giản là: coin: :Coin
Vì vậy, trừ khi loại của bạn được khai báo như thế này:
phantom struct MyCoin has store, drop {}
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Kiếm phần của bạn từ 1000 Sui
Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.

- ... SUIBigSneh+1396
- ... SUISuiLover+1333
- ... SUI0xduckmove+1207
- ... SUIThorfin+1202
- ... SUIOwen+970
- ... SUIharry phan+847
- ... SUItheking+742
- Tại sao BCS yêu cầu thứ tự trường chính xác để khử chuỗi khi cấu trúc Move có các trường được đặt tên?53
- Nhiều lỗi xác minh nguồn” trong các ấn phẩm về mô-đun Sui Move - Giải quyết lỗi tự động43
- Giao dịch Sui thất bại: Đối tượng được dành riêng cho giao dịch khác25
- Làm thế nào để các ràng buộc về khả năng tương tác với các trường động trong các bộ sưu tập không đồng nhất?05