Menu
CoddyTech

回顾:矩形操作

本课属于 Coddy Rust 学习旅程的“面向对象编程”单元。第 7 课,共 61 课。

challenge icon

挑战

简单

创建一个包含两个字段的 Rectangle 结构体:width(u32)和 height(u32)。

为 Rectangle 添加一个实现块,包含以下内容:

  • new:一个关联函数,接收 width: u32 和 height: u32,并返回一个新的 Rectangle
  • area:接收 &self,并以 u32 的形式返回面积
  • scale:接收 &mut self 和一个 factor: u32,将宽度和高度都乘以该因子

你将收到三个输入:

  • 第一行:宽度(u32)
  • 第二行:高度(u32)
  • 第三行:缩放因子(u32)

使用提供的尺寸,通过 Rectangle::new 创建一个可变的 Rectangle。打印初始面积,然后按给定因子缩放矩形,并打印新的面积。

预期输出格式:

{initial_area}
{scaled_area}

亲手试试

use std::io;

// TODO: 在这里定义 Rectangle 结构体


// TODO: 为 Rectangle 添加实现块,包含:
// - new:接收 width 和 height 并返回 Rectangle 的关联函数
// - area:接收 &self 并返回 u32 的方法
// - scale:接收 &mut self 和 factor,并将 width 和 height 乘以 factor 的方法


fn main() {
    let mut input = String::new();
    
    // 读取宽度
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let width: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // 读取高度
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let height: u32 = input.trim().parse().expect("Invalid number");
    
    input.clear();
    
    // 读取缩放系数
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let factor: u32 = input.trim().parse().expect("Invalid number");
    
    // TODO: 使用 Rectangle::new 创建一个可变的 Rectangle
    
    // TODO: 输出初始面积
    
    // TODO: 按 factor 缩放矩形
    
    // TODO: 输出新的面积
}

面向对象编程中的所有课

自己练习: Rust 在线编译器