Câu trả lời:
Bạn đang nói về gets
?
puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
Một cái gì đó như vậy?
Kernel.gets
cố gắng đọc các tham số được tìm thấy trong ARGV
và chỉ yêu cầu điều khiển nếu không ARGV
tìm thấy. Để buộc đọc từ bảng điều khiển ngay cả khi ARGV
không sử dụng trốngSTDIN.gets
Kernel.gets
cố gắng đọc các tệp được tìm thấy trong ARGV
và chỉ yêu cầu bảng điều khiển nếu không ARGV
tìm thấy. Để buộc đọc từ bảng điều khiển ngay cả khi ARGV
không sử dụng trống STDIN.gets
.
a.to_i
và b.to_i
có thể tốt hơn
gets
chặn? Nếu không, có bất kỳ thay thế nào đang chặn không?
bạn cũng có thể chuyển các tham số thông qua dòng lệnh. Đối số dòng lệnh là các cửa hàng trong mảng ARGV. vì vậy ARGV [0] là số đầu tiên và ARGV [1] là số thứ hai
#!/usr/bin/ruby
first_number = ARGV[0].to_i
second_number = ARGV[1].to_i
puts first_number + second_number
và bạn gọi nó như thế này
% ./plus.rb 5 6
==> 11
Có nhiều cách để lấy ý kiến từ người dùng. Cá nhân tôi thích sử dụng phương pháp get. Khi bạn sử dụng hàm get, nó sẽ nhận chuỗi mà bạn đã nhập và bao gồm phím ENTER mà bạn đã nhấn để kết thúc quá trình nhập của mình.
name = gets
"mukesh\n"
Bạn có thể thấy điều này trong irb ; gõ cái này và bạn sẽ thấy \ n, là ký tự "dòng mới" mà phím ENTER tạo ra: Nhập,
name = gets
bạn sẽ thấy một cái gì đó như"mukesh\n"
Bạn có thể loại bỏ ký tự dòng mới khó chịu bằng phương thức chomp .
Phương thức chomp trả lại cho bạn chuỗi, nhưng không có dòng mới kết thúc. Đẹp chomp method cứu tinh cuộc sống.
name = gets.chomp
"mukesh"
Bạn cũng có thể sử dụng thiết bị đầu cuối để đọc đầu vào. ARGV là một hằng số được định nghĩa trong lớp Đối tượng . Nó là một thể hiện của lớp Array và có quyền truy cập vào tất cả các phương thức của mảng. Vì nó là một mảng, mặc dù nó là một hằng số, các phần tử của nó có thể được sửa đổi và xóa mà không gặp khó khăn gì. Theo mặc định, Ruby nắm bắt tất cả các đối số dòng lệnh được chuyển đến một chương trình Ruby (được phân chia bởi dấu cách) khi lệnh nhị phân dòng lệnh được gọi và lưu trữ chúng dưới dạng chuỗi trong mảng ARGV .
Khi được viết bên trong chương trình Ruby của bạn, ARGV sẽ thực hiện một lệnh dòng lệnh giống như sau:
test.rb hi my name is mukesh
và tạo một mảng trông giống như sau:
["hi", "my", "name", "is", "mukesh"]
Nhưng, nếu tôi muốn thông qua đầu vào hạn chế thì chúng ta có thể sử dụng một cái gì đó như thế này.
test.rb 12 23
và sử dụng những đầu vào như thế này trong chương trình của bạn:
a = ARGV[0]
b = ARGV[1]
Nếu bạn muốn tạo bảng điều khiển tương tác:
#!/usr/bin/env ruby
require "readline"
addends = []
while addend_string = Readline.readline("> ", true)
addends << addend_string.to_i
puts "#{addends.join(' + ')} = #{addends.sum}"
end
Cách sử dụng (giả sử bạn đặt đoạn mã trên vào summator
tệp trong thư mục hiện tại):
chmod +x summator
./summator
> 1
1 = 1
> 2
1 + 2 = 3
Sử dụng Ctrl + D
để thoát