Move Language Basic
Maps

Maps

0x1::simple_map

Module này cung cấp giải pháp cho maps features, maps sẽ có các đặc điểm sau:

  • Keys point to Values: Mỗi khóa (Key) liên kết với một giá trị (Value).
  • Each key must be unique: Không có hai khóa nào trùng lặp.
  • A Key can be found within O(Log N) time
  • Dữ liệu được lưu trữ theo thứ tự sắp xếp theo Khóa: Các phần tử trong maps được sắp xếp dựa trên khóa.
  • Thêm và xóa phần tử mất thời gian O(N): Thời gian để thêm hoặc xóa một phần tử tỷ lệ thuận với số lượng phần tử trong bản đồ.

Define an empty map

let NAME : SimpleMap<TYPE1,TYPE2> = simple_map::create();

Operations on Maps:

module my_addrx::Mapping
{
    use std::simple_map::{SimpleMap,Self};
    use std::string::{String,utf8};
 
    public fun mapping_in_move()
    {
        let mp:SimpleMap<u64,String> = simple_map::create(); //creating an empty map where Key->integer and Value->string.
 
 
        //adding the key and corresponding value in the map
        simple_map::add(&mut mp,1 ,utf8(b"John"));
        simple_map::add(&mut mp,2 ,utf8(b"Ben"));
        simple_map::add(&mut mp,3 ,utf8(b"Tony"));
        simple_map::add(&mut mp,4 ,utf8(b"Gwen"));
 
        //calculating the length of the map
        let l=simple_map::length(&mut mp);
        assert!(l==4,1);
 
        //checking if a given key exists or not in the vector
        let x=simple_map::contains_key(&mut mp,&2);
        assert!(x==true,1);
 
        //removing key value pair in the map
        simple_map::remove(&mut mp,&2);
        assert!(simple_map::contains_key(&mut mp,&2)==false,1);
 
        //borrowing immutable reference to the value of a given key
        let v=simple_map::borrow(&mut mp,&3);
        assert!(v==&utf8(b"Tony"),1);
 
        //borrowing mutable reference to the value of a given key
        let v=simple_map::borrow_mut(&mut mp,&3);
        *v=utf8(b"Changed Name");
 
        assert!(simple_map::borrow(&mut mp,&3)==&utf8(b"Changed Name"),1);
 
 
    }
 
    #[test]
    fun testing()
    {
        mapping_in_move();
    }
}