美文网首页
Zilliqa官方例子HelloWorld注释(一)

Zilliqa官方例子HelloWorld注释(一)

作者: firestack_lab | 来源:发表于2018-07-29 22:58 被阅读0次
    (* HelloWorld contract *)
    (* "(*...*)"表示注释 *)
    
    (***************************************************)
    (*               Associated library                *)
    (***************************************************)
    (* 声明HelloWorld库 *)
    library HelloWorld
    
    (* one_msg函数创建一个Message类型的列表 *)
    let one_msg = 
      fun (msg : Message) => 
      (* Nil{Message}表示创建了一个Message类型的空列表 *)
      let nil_msg = Nil {Message} in
      (* Cons...表示在Message类型的列表nil_msg头部插入msg作为列表项 *)
      Cons {Message} msg nil_msg
    
    (* 定义错误代码,not_owner_code的是32位整型的1,set_hello_code的是2 *)
    let not_owner_code = Int32 1
    let set_hello_code = Int32 2
    
    (***************************************************)
    (*             The contract definition             *)
    (***************************************************)
    (* contract定义合约 *)
    contract HelloWorld
    (* (vname: vtype)定义合约中的不可变变量 *)
    (owner: Address)
    
    (* field vame: vtype = "",定义合约中的可变变量,默认为空值 *)
    field welcome_msg : String = ""
    
    (* transition定义setHello,含msg参数,类型为String *)
    transition setHello (msg : String)
      (* builtin eq为内置函数,判断owner是否等于_sender *)
      is_owner = builtin eq owner _sender;
      (* match z with...| x =>...| y =>...end, 判断逻辑分支,类似其他语言的if-then-else语句 *)
      match is_owner with
      | False =>
        (* 定义msg,包含_tag, _recipient, _amount, _code四种参数 *)
        msg = {_tag : "Main"; _recipient : _sender; _amount : Uint128 0; code : not_owner_code};
        (* one_msg是实用函数,表示创建一个消息列表并插入至msg中 *)
        msgs = one_msg msg;
        (* 发送消息 *)
        send msgs
      | True =>
        (* 将msg消息内容赋值给可变变量welcome_msg,msg消息内容在Message.json内已定义好 *)
        welcome_msg := msg;
        msg = {_tag : "Main"; _recipient : _sender; _amount : Uint128 0; code : set_hello_code};
        msgs = one_msg msg;
        send msgs
      end
    end
    
    
    transition getHello ()
        (* 可变变量r读取welcome_msg的值 *)
        r <- welcome_msg;
        msg = {_tag : "Main"; _recipient : _sender; _amount : Uint128 0; msg : r};
        msgs = one_msg msg;
        send msgs
    end
    

    相关文章

      网友评论

          本文标题:Zilliqa官方例子HelloWorld注释(一)

          本文链接:https://www.haomeiwen.com/subject/wngtvftx.html