在 Ruby 中使用 Get 接受使用者輸入
Nurudeen Ibrahim
2022年5月18日
在 Ruby 中構建命令列 (CLI) 應用程式時,一個常見的功能是接收來自使用者的輸入,包括使用者名稱或是/否
響應。這就是 gets
關鍵字有用的地方。
本教程將展示如何構建一個非常簡單的 CLI 程式,該程式允許使用者輸入他們的名字並使用他們輸入的名字問候他們。
示例程式碼:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts "Hello #{name}, nice to have you here"
輸出:
Hi, welcome to my app.
Enter your name to get started:
以上是我執行程式碼後得到的輸出。此時,程式要求我輸入我的名字。這就是 gets
所做的;它建立一個提示並等待使用者輸入。
下面是我輸入我的名字為 John
並按 Enter 鍵後得到的完整輸出。
Hi, welcome to my app.
Enter your name to get started:
John
Hello John
, nice to have you here
你一定已經注意到上面的輸出中有一些奇怪的東西。為什麼打招呼 Hello John, nice to have you here
在 John
之後中斷?要了解實際情況,請檢查變數 name
。
示例程式碼:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts name.inspect
puts "Hello #{name}, nice to have you here"
輸出:
Hi, welcome to my app.
Enter your name to get started:
John
"John\n"
Hello John
, nice to have you here
以上是我輸入 John
作為我的名字後得到的完整輸出。你可以看到 name
變數顯示為 John\n
。
這就是 gets
的行為方式;它會自動將\n
附加到它作為使用者輸入接收到的任何值上,這稱為換行符,每當它出現在文字中時,這意味著文字應該在該點中斷,並在新行上繼續。
解決此問題的一個好方法是使用 chomp
方法,該方法刪除任何尾隨特殊字元,不僅是換行符 (\n
),還包括回車符 (\r
)。你可以在此處閱讀更多有關 chomp
工作原理的資訊。
示例程式碼:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets.chomp
puts "Hello #{name}, nice to have you here"
輸出:
Hi, welcome to my app.
Enter your name to get started:
John
Hello John, nice to have you here