2.2. 元组
题目1
在上面的例子中给 Matrix 结构体 加上 fmt::Display trait,这样当你从 Debug 格式化 {:?} 切换到 Display 格式化 {} 时,会得到如下的输出:
( 1.1 1.2 ) ( 2.1 2.2 )
解答1
// 为了使用 `{}` 标记,必须手动为类型实现 `fmt::Display` trait。 impl fmt::Display for Matrix { // 这个 trait 要求 `fmt` 使用与下面的函数完全一致的函数签名 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { // 仅将 self 的第一个元素写入到给定的输出流 `f`。返回 `fmt:Result`,此 // 结果表明操作成功或失败。注意 `write!` 的用法和 `println!` 很相似。 write!(f, "( {},{} )\n( {},{} )", self.0,self.1,self.2,self.3) } }
题目2
以 reverse 函数作为样板,写一个 transpose 函数,它可以接受一个 Matrix 作为参数,并返回一个右上 - 左下对角线上的两元素交换后的 Matrix。
解答2
// 元组可以充当函数的参数和返回值 fn transpose(mut m:Matrix) -> Matrix { // 可以使用 `let` 把一个元组的成员绑定到一些变量 let temp=m.1; m.1=m.2; m.2=temp; m }