تمرین: آرایه‌های تو در تو

آرایه ها می توانند آرایه های دیگری نیز داشته باشند:

#![allow(unused)] fn main() { let array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; }

نوع این متغیر چیست؟

از آرایه‌ای مشابه مثال بالا برای نوشتن تابع transpose استفاده کنید که یک ماتریس را جابجا می‌کند (ردیف‌ها را به ستون‌ها تبدیل می‌کند):

2584567⎤8⎥9⎦transpose==1473⎤6⎥9⎦123

کد زیر را در https://play.rust-lang.org/ کپی کرده و توابع را پیاده‌سازی کنید:

// TODO: این را زمانی که پیاده‌سازی‌تان تمام شد حذف کنید. #![allow(unused_variables, dead_code)] fn transpose(matrix: [[i32; 3]; 3]) -> [[i32; 3]; 3] { unimplemented!() } #[test] fn test_transpose() { let matrix = [ [101, 102, 103], // [201, 202, 203], [301, 302, 303], ]; let transposed = transpose(matrix); assert_eq!( transposed, [ [101, 201, 301], // [102, 202, 302], [103, 203, 303], ] ); } fn main() { let matrix = [ [101, 102, 103], ‏// <-- این کامنت باعث می‌شود rustfmt یک خط جدید اضافه کند. [201, 202, 203], [301, 302, 303], ]; println!("matrix: {:#?}", matrix); let transposed = transpose(matrix); println!("جابجا شده است: {:#?}", transposed); }