Day 4:回傳多個值與 Option 回傳
學習目標
- 用 tuple 回傳多個值
- 理解 Option 的基本概念
- 學會
return 提前結束函式
今日重點
用 Tuple 回傳多個值
fn divide(a: f64, b: f64) -> (f64, bool) {
if b == 0.0 {
(0.0, false)
} else {
(a / b, true)
}
}
fn main() {
let (quotient, success) = divide(10.0, 3.0);
println!("10 / 3 = {} (success: {})", quotient, success);
}
提前回傳(return)
fn find_even(numbers: &[i32]) -> Option<i32> {
for &num in numbers {
if num % 2 == 0 {
return Some(num); // 找到就立刻回傳
}
}
None // 沒找到,回傳 None
}
Option 初體驗
Some(value):有值
None:沒有值
- 用
match 解開
fn main() {
let numbers = vec![1, 3, 5, 8, 9];
match find_even(&numbers) {
Some(even) => println!("Found even: {}", even),
None => println!("No even number found"),
}
}
練習
- 寫一個函式
min_max(nums: &[i32]) -> (i32, i32) 回傳最小和最大值。
- 寫一個
first_char(s: &str) -> Option<char>,空字串回 None。
自我檢查