まとめ:Rectangle の操作
CoddyのRustジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 7/61。
チャレンジ
簡単2つのフィールド、width (u32) と height (u32) を持つ Rectangle structを作成してください。
Rectangle の実装ブロックを次のように追加してください。
new:width: u32とheight: u32を受け取り、新しいRectangleを返す associated functionarea:&selfを受け取り、面積をu32として返すscale:&mut selfとfactor: u32を受け取り、width と height の両方に factor を掛ける
3つの入力を受け取ります。
- 1行目: width (u32)
- 2行目: height (u32)
- 3行目: scale factor (u32)
指定された寸法を使って Rectangle::new で mutable な Rectangle を作成してください。initial area を出力し、その後 rectangle を指定された factor で scale して、新しい area を出力してください。
期待される出力形式:
{initial_area}
{scaled_area}自分で試してみよう
use std::io;
// TODO: ここに Rectangle 構造体を定義する
// TODO: Rectangle の実装ブロックを次の内容で追加する:
// - new: width と height を受け取り、Rectangle を返す関連関数
// - area: &self を受け取り、u32 を返すメソッド
// - scale: &mut self と factor を受け取り、width と height を乗算するメソッド
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オンラインコンパイラ