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