Tôi biết câu hỏi này đã cũ, nhưng tôi sẽ hiển thị những gì tôi sử dụng làm phương pháp tiêu chuẩn để nhận đầu vào.
require 'readline'
def input(prompt="", newline=false)
prompt += "\n" if newline
Readline.readline(prompt, true).squeeze(" ").strip
end
Điều này thực sự tuyệt vời vì nếu người dùng thêm các khoảng trắng lạ ở cuối hoặc ở đầu, nó sẽ xóa những khoảng trắng đó và lưu lại lịch sử những gì họ đã nhập trong quá khứ (Thay đổi true
thành false
để không làm điều đó.). Và, nếu ARGV
không trống, sau đó gets
sẽ cố gắng đọc từ một tệp trong ARGV
, thay vì nhận đầu vào. Thêm vào đó, Readline
là một phần của thư viện chuẩn Ruby nên bạn không phải cài đặt bất kỳ viên ngọc nào. Ngoài ra, bạn không thể di chuyển con trỏ của mình khi sử dụng gets
, nhưng bạn có thể với Readline
.
Và, tôi biết phương pháp không phải là một dòng, mà là khi bạn gọi nó
name = input "What is your name? "