fn main() { hello(String::from("taro")); hello(String::from("hanako")); } fn hello(name:String) { println!("Hello, {}!",name); }
戻り値を持つ関数
fn main(){ print_msg(100); print_msg(200); print_msg(300); } fn print_msg(max:i32){ println!("{}までの合計は、{}です。", max, calc(max)); } fn calc(max:i32)-> i32 { let mut result = 0; for n in 0..max { result += n; } result }
### 値としての関数
定義に関数名がない匿名関数
変数 = |引数| {…処理…}
fn main(){ let calc = |max| { let mut result = 0; for n in 0..max { result += n; } result }; let print_msg = |max| { println!("{}までの合計は{}です。", max, calc(max)); } print_msg(100); print_msg(200); print_msg(300); }
### クロージャ
値として定義された匿名関数を変数に代入したものはクロージャという
元々、関数をオブジェクトとして利用できるようにする仕組み
fn main(){ let max = 100; let res = calc(max); let print_msg = || { println!("{}までの合計は{}です。", max, res); }; print_msg(); let max = 200; let res = calc(max); let print_msg = || { println!("0-{} Total:{}", max, res); }; print_msg(); } fn calc(max:i32)-> i32 { let mut result = 0; for n in 0..max { result += n; } result }