まとめ:Rectangle の操作
CoddyのRustジャーニー「Object Oriented Programming」セクションの一部 — レッスン 7/61。
チャレンジ
簡単2つのフィールド、width (u32) と height (u32) を持つ Rectangle 構造体を作成してください。
Rectangle に対して、以下の内容を含む実装ブロックを追加してください。
new—width: u32とheight: u32を受け取り、新しいRectangleを返す関連関数area—&selfを受け取り、面積をu32として返すメソッドscale—&mut selfとfactor: u32を受け取り、幅と高さの両方にその係数を掛けるメソッド
3つの入力を受け取ります:
- 1行目: 幅 (u32)
- 2行目: 高さ (u32)
- 3行目: スケール係数 (u32)
提供された寸法を使用して、Rectangle::new で可変の Rectangle を作成してください。最初の面積を出力し、次に指定された係数で長方形をスケールし、新しい面積を出力してください。
期待される出力形式:
{initial_area}
{scaled_area}自分で試してみよう
use std::io;
// TODO: ここでRectangle構造体を定義します
// TODO: Rectangleの実装ブロックを追加します:
// - new: 幅と高さを受け取り、Rectangleを返す関連関数
// - area: &selfを受け取り、u32を返すメソッド
// - scale: &mut selfと係数を受け取り、幅と高さを乗算するメソッド
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: 係数によって長方形をスケールさせます
// TODO: 新しい面積をプリントします
}