结构和能力 #
Struct 是一种在 move 中定义自定义类型的方法。它可以被描述为一个简单的键-值
存储,其中键是属性的名称,值是存储的内容。
语法:
struct NAME has Abilities
{
FIELD1 : TYPE1,
FIELD2 : TYPE2,
...
}
Struct 最多可以有 4 个能力来定义如何使用、删除或存储这种类型的值。
copy
- 可以复制值(或按值克隆)。
drop
- 值可以在范围末尾被删除。
key
- value 可以作为全局存储操作的键。
store
- 值可以存储在全局存储中。
整数、向量、地址和布尔值等原始类型的能力是预定义且不可更改的:复制、删除和存储。
module my_addrx::Application {
use std::vector;
use std::debug;
use std::string::{String,utf8};
struct Users has key,drop {
list_of_users: vector<User> //storing the list of the users
}
struct User has store,drop,copy {
name:String, //information required for a typical user
age:u8
}
//creating a user by adding the user to the existing list and returning the user
public fun create_user(newUser: User,users: &mut Users): User{
vector::push_back(&mut users.list_of_users,newUser);
return newUser
}
#[test]
fun test_create_friend(){
let user1 = User {
name:utf8(b"Tony"),
age:50,
};
let users = Users{
list_of_users: vector::empty<User>()
};
let createdUser = create_user(user1,&mut users);
debug::print(&users);
assert!(createdUser.name == utf8(b"Tony"),0);
}
}