StarknetAstro

StarknetAstro

10_Cairo1.0中的function(函式)

10_Cairo1.0 中的 function (函數)#

此文章使用的 Cairo 編譯器版本:2.0.0-rc0。因為 Cairo 正在快速更新,所以不同版本的語法會有些許不同,未來將會將文章內容更新到穩定版本。

基本用法#

函數是任何一門編程語言必不可少的基礎構建。一個函數一般包括:函數名、參數 和 返回值。在 Cairo 中,約定俗成的規定是將函數名和變量名使用” 蛇形命名法” 來命名,就像: my_function_name

use debug::PrintTrait;

fn another_function() {
    'Another function.'.print();
}

fn main() {
    'Hello, world!'.print();
    another_function();
}

函數被調用的方式也和大多數語言一樣,another_function() 是調用普通函數的寫法, 'Hello, world!'.print() 是調用 trait 中函數的寫法。

參數 & 返回值#

Cairo 是一門靜態語言,函數的每個參數和返回值都需要顯式指定類型。不指定將會報錯,就像:

fn add(a: felt252, b) {
    let c = a + b;
    return c;
}

fn main() -> felt252 {
   add(3, 5) 
}

上面有兩個錯誤點:

  1. 參數 b 沒有指定類型
  2. 函數 add 沒有指定返回值類型,但是卻用了 return 語句將 c 變量返回

正確代碼:

fn add(a: felt252, b: felt252) -> felt252{
    let c = a + b;
    return c;
}

fn main() -> felt252 {
   add(3, 5) 
}

返回語句#

可以使用 return 顯示返回,也可以使用不加分號的語句返回。如:

fn add(a: felt252, b: felt252) -> felt252 {
	// 返回 a + b
    a + b
}

fn sub(a: felt252, b: felt252) -> felt252 {
    return a - b;
}

fn main() -> felt252 {
   add(3, 5);
   sub(11, 7)
}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。