// 结构
结构,就是去宣告我们所要生成的物件,他的名称,以及它有哪些内容、功能。
例如三明治製作的範例中,他就火腿、麵包、三明治等结构体。
这边进行宣告并不是他已经生成,而是一个雏形,就像模具一样,我们先朔造了一个模具,未来我们这个物件时,只要告诉系统我要生成这个东西,系统便会按照模具给我们生成这个物件。
struct Ham has key { id:UID }
struct > 名称 > has > 赋能 > {此结构的内容}
名称 - 开头皆为大写,以作为区分。
赋能 - 为move的特点,每个结构可以赋予其功能,有key , store , drop , copy.
在运用上,依照此结构的用途来进行赋能,这些功能的用法之后有机会再来说明。
内容 - 在suimove的结构,开头一定都是以 id:UID为主,如果没有这个内容,就代表这个结构不是sui的物件,只有内容中有这个编码的,才会被sui系统断定为自己人。 id:UID的意思即是赋予每个参考这个结构体所生成的物件,都有一个hash ID,而虽然是同样的模具製造,但每个物件都有自己独特的ID,用于区分它们。
例如,我今天要製造一把剑,但每次製造的剑他的数值是随机的,此时为了区分它们的不同,所以会给予ID,不过这只是其中一个原因,后续要去进行交易、改变、销毁,都会运用到,当然他还有许多可能性,等待被发掘运用。
内容编码部分,id : UID。
id 是内容的名称 > :是用于定义此名称属于什么类型 > UID 即是调用上面框架,表示它是这样类型的物件。
例如,我做了一个Hero的结构
struct Hero has key, store { id: UID, //id hp: u64, //英雄血量 experience: u64, //角色经验值 sword: Option<Sword>, //是否装备剑 name: string::String, //英雄名称 }
在之后函数调用此结构,进行生成时,会再将要生成的英雄数值,填入相对应的内容中,后面再继续来说明。
// 常数
常数与大部分语言相同,主要就是赋予某东西数值,而move中也会看到,将错误讯息写在常数中,他对应得值,即是报错时的代码。
const HAM_PRICE: u64 = 10; //火腿价值10元const EInsufficientFunds: u64 = 001; //错误代码:告诉使用者,资金不足导致系统错误
const > 名称 > :(定义类型) > 类型 > = > 数值。
名称 - 多以大写开头,可以全大写然后用_分隔单字,也可用大小写穿插。依照个人习惯。
类型 - u8 , u16 , u64 , u128 ,目前sui中最常使用的就是u64。
先告一段落,后面慢慢进行~