iT邦幫忙

0

sui move 學習 - 從頭開始 教學 -3

  • 分享至 

  • xImage
  •  

// 函數

最後函數部分,就是主要的內容了。
有幾種不同的函數式

fun name() {};               //內部函數
public fun name() {};        //公開函數
public entry name() {};      //入口函數
public(friend) fun name() {};//這我還不會 XD...

內部函數 - 此函數用於只有本合約內部可以調用、執行。
公開函數 - 在其他模組module可以調用、執行此函數。
入口函數 - 在部署合約後,用於外部執行指令的函數,意指,這是外部使用此合約的入口處。

name - 函數名稱,通常使用小寫+_來編名,如:buy_ham。
() - 括號內部為要帶入的數值。
{} - 花括號內部為此函數的內容。
若此函數有需要return,在花括號後面需要加上 :類型
例如: fun name(){}:u64;
這樣代表這串函數最後會返回一個數值。
需要注意的是,如果這函數為入口函數,那他就不可以有返回值。

大致上suimove的架構是如此,為了比較好學習,就讓我們直接開始 製作三明治。


module sandwich::shop {
    //首先我們來建構要製作三明治的材料
    
    struct Ham has key { id:UID } //宣告火腿結構,並賦予它id
    struct Bread has key { id:UID } //宣告麵包結構。
    struct Sandwich has key { id:UID } //宣告三明治結構。

此處有將此三個結構都賦能key,此能力表明這些結構是可以在地址之間傳輸的Sui對象。
再來因為我們有在這裡用到UID,這個類型,所以我們需要調用框架。

module sandwich::shop {
    
    use sui::object::UID // UID隸屬於object裡,所以從object指定調用它。
    
    struct Ham has key { id:UID }
    struct Bread has key { id:UID }
    struct Sandwich has key { id:UID }
    
    //接著我們來給火腿跟麵包定價。
    
    const HAM_PRICE: u64 = 10;
    const BREAD_PRICE: u64 = 2;


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言