Skip to content

关于Entry函数参数类型的疑问 #22

Answered by fyang1024
fyang1024 asked this question in Q&A
Discussion options

You must be logged in to vote

这么长时间没人回答,我只好自己来了。

问题1:为什么mint_to_sender函数的name和description函数用了vector<u8>类型,而不是直接使用std:string类型?

回答:因为Move的基本类型里并没有String,这点和其它编程语言是不同的. std::string是一个模块,里面定义的是String类型。查看framework中的string.move的源码,我们可以看到String类型的定义如下:

   /// A `String` holds a sequence of bytes which is guaranteed to be in utf8 format.
    struct String has copy, drop, store {
        bytes: vector<u8>,
    }

可见,String是个结构类型,结构里面包裹了一个vector<u8>类型的字段

问题2: 如果用js代码通过@mysten/sui.js中的moveCall函数调用这个entry函数,该怎样传name和description参数?

回答:只需要传递字符串,通过TransactionBlock中定义的pure方法传递,例如

TransactionBlock txb = new TransactionBlock()
...
txb.pure('This is a String') // 传递给类型为 vector<u8> 的参数
...

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by fyang1024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant