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)
}
上面有兩個錯誤點:
- 參數 b 沒有指定類型
- 函數 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)
}