2019年7月10日水曜日

開発環境

プログラミング言語Rust 公式ガイド (Steve Klabnik(著)、Carol Nichols(著)、尾崎 亮太(翻訳)、KADOKAWA)の第2章(数当てゲームをプログラムする)のコードをソースコードのコメント中以外にも日本語を含めて書いてみる。(コメント中以外に日本語文字があるとコンパイルに失敗することがあるとの記述があったから、失敗する場合をちょっとずつ探してみる。)

コード

extern crate rand;

use rand::Rng;

use std::cmp::Ordering;
use std::io;

fn main() {
    println!("数を予想。");

    let secret_number = rand::thread_rng().gen_range(1, 101);
    loop {
        println!("予想を入力: ");
        let mut guess = String::new();

        io::stdin()
            .read_line(&mut guess)
            .expect("行の読み込みに失敗!");
        if guess.trim() == "quit" {
            break;
        }
        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => {
                println!("⚠️1から100までの数値を入力してください!");
                continue;
            }
        };
        match guess.cmp(&secret_number) {
            Ordering::Less => println!("小さすぎます。"),
            Ordering::Greater => println!("大きすぎます。"),
            Ordering::Equal => {
                println!("正解!");
                break;
            }
        }
    }
}

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)

$ cargo run
   Compiling guessing_game v0.1.0 (/.../guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 0.67s
     Running `target/debug/guessing_game`
数を予想。
予想を入力: 
50
小さすぎます。
予想を入力: 
75
大きすぎます。
予想を入力: 
62
小さすぎます。
予想を入力: 
68
大きすぎます。
予想を入力: 
65
大きすぎます。
予想を入力: 
a
数値を入力してください!
予想を入力: 
63
小さすぎます。
予想を入力: 
64
正解!
$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/guessing_game`
数を予想。
予想を入力: 
-1
数値を入力してください!
予想を入力: 
  C-c C-c
$ cargo run
   Compiling guessing_game v0.1.0 (/.../guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 0.41s
     Running `target/debug/guessing_game`
数を予想。
予想を入力: 
50
大きすぎます。
予想を入力: 
25
小さすぎます。
予想を入力: 
37
大きすぎます。
予想を入力: 
31
大きすぎます。
予想を入力: 
28
大きすぎます。
予想を入力: 
26
小さすぎます。
予想を入力: 
27
正解!
$ cargo check
    Checking guessing_game v0.1.0 (/.../guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 0.13s
$ cargo run
   Compiling guessing_game v0.1.0 (/.../guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 0.34s
     Running `target/debug/guessing_game`
数を予想。
予想を入力: 
quit
$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/guessing_game`
数を予想。
予想を入力: 
50
大きすぎます。
予想を入力: 
a
1から100までの数値を入力してください!
予想を入力: 
-1
1から100までの数値を入力してください!
予想を入力: 
quit
$ cargo check
    Checking guessing_game v0.1.0 (/.../guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 0.13s
$ cargo run
   Compiling guessing_game v0.1.0 (/.../guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 0.42s
     Running `target/debug/guessing_game`
数を予想。
予想を入力: 
-1
⚠️1から100までの数値を入力してください!
予想を入力: 
a
⚠️1から100までの数値を入力してください!
予想を入力: 
quit
$ 

今のところ、日本語と英語(アルファベット、ASCII文字)と絵文字を混ぜても特に問題なし。あるいはOSによって違うのかも。(試したのはmacOSで、その他Windows等は試してない。)

0 コメント:

コメントを投稿