11 月 2021

用 Rust 寫簡單的互動式命令列程式

最近在研究 1904 年日期系統,想說寫一個簡單的 Rust 程式來測試一下想法。主要的轉換函式寫完後,希望把程式寫成簡單的互動式程式,方便測試。

參考網路上的文章,結果如下:

// 先不用管 y1904 的細節,在這個範例中不重要。
mod y1904;

// 使用 std::io::Write 是為了 flush()
use std::io::{stdin, stdout, Write};
use y1904::*;

fn main() {
    loop {
        // 記得轉成 lowercase,比較好處理
        match prompt_for_input("> ").to_ascii_lowercase().as_str() {
            "exit" => break,
            s @ _ => match s.parse::<u64>() {
                Ok(num) => println!("{:?}", num_to_date(num)),
                _ => continue,
            },
        }
    }
}

fn prompt_for_input(prompt: &str) -> String {
    print!("{}", prompt);

    // 如果沒有呼叫 flush() 的話,在使用者輸入之前,上一行可能不會印出來
    stdout().flush().unwrap();

    let mut result = String::new();
    stdin().read_line(&mut result).unwrap();

    // 使用 trim() 去掉換行符號。
    // trim() 回傳的是 &str,因此要再轉成 String 回傳
    result.trim().to_string()
}

至於 y1904 的內容.... 之後再說好了。 XDD

全主場時代球迷與球團的心態調整

按:此文為 2014 年 Lamigo 桃猿隊實施「全猿主場」之初,於 Blogger 及 PTT 上發表過的文章,單純搬運回來當作備份。

我從職棒紀元前的「甲組成棒聯賽」開始看台灣成棒/職棒,看著看著竟也有二十餘年了。職棒走過了二十多年的「草創時期」,今年終於有個球團完全落實屬地主義,打破二十多年來「壁壘分明」、「漢賊不兩立」的傳統,將整個內野區劃為「主場球隊責任區」。突破「傳統」的做法想當然爾會引起話題和爭論,不過平心而論,這樣的做法完全符合世界潮流,是中華職棒的一大進步;球迷間的反應也以正面居多。而其他球團雖然有些反對的雜音,但目前的趨勢看起,各隊都多多少少朝著「全主場」的方向前進中。

不諱言地說,我目前支持的球隊正是實施「全猿主場」的 Lamigo 桃猿,今年的「全猿主場」當然也進場體驗過了幾次。對於球團努力的成果,我給予高度的肯定!不過,也許是二十多年來那種壁壘分明的對立心態還存在我們心中,我覺得球迷們(尤其是客隊的球迷)好像還沒有準備好接受這樣的改變。另外,目前的「全猿主場」做法我也覺得還有些可以調整的地方,藉由這篇文章來一起討論。

Read More