陣列和 for
迴圈
我們已瞭解陣列的宣告方式可能如下:
#![allow(unused)] fn main() { let array = [10, 20, 30]; }
您可以使用 {:?}
偵錯表示法輸出這樣的陣列:
fn main() { let array = [10, 20, 30]; println!("array: {array:?}"); }
您可在 Rust 中使用 for
關鍵字,對陣列和範圍等項目進行疊代作業:
fn main() { let array = [10, 20, 30]; print!("Iterating over array:"); for n in &array { print!(" {n}"); } println!(); print!("Iterating over range:"); for i in 0..3 { print!(" {}", array[i]); } println!(); }
使用上述程式碼編寫可用用於美化矩陣排版的 pretty_print
函式,以及用於轉置矩陣 (將列轉換為欄) 的 transpose
函式:
為這兩個函式進行硬式編碼,以便在 3 × 3 矩陣上執行。
將下方程式碼複製到 https://play.rust-lang.org/,並實作函式:
// TODO: remove this when you're done with your implementation. #![allow(unused_variables, dead_code)] fn transpose(matrix: [[i32; 3]; 3]) -> [[i32; 3]; 3] { unimplemented!() } fn pretty_print(matrix: &[[i32; 3]; 3]) { unimplemented!() } fn main() { let matrix = [ [101, 102, 103], // <-- the comment makes rustfmt add a newline [201, 202, 203], [301, 302, 303], ]; println!("matrix:"); pretty_print(&matrix); let transposed = transpose(matrix); println!("transposed:"); pretty_print(&transposed); }
加分題
您是否能夠使用 &[i32]
切片 (而非硬式編碼的 3 × 3 矩陣) 做為引數和傳回型別?例如針對二維切片使用 &[&[i32]]
。原因為何?
請參閱 ndarray
Crate,瞭解如何在確保實際工作環境品質的情況下實作。