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
}