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.getscố gắng đọc các tham số được tìm thấy trong ARGVvà chỉ yêu cầu điều khiển nếu không ARGVtìm thấy. Để buộc đọc từ bảng điều khiển ngay cả khi ARGVkhông sử dụng trốngSTDIN.gets
Kernel.getscố gắng đọc các tệp được tìm thấy trong ARGVvà chỉ yêu cầu bảng điều khiển nếu không ARGVtìm thấy. Để buộc đọc từ bảng điều khiển ngay cả khi ARGVkhông sử dụng trống STDIN.gets.
a.to_ivà b.to_icó thể tốt hơn
getschặ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 = getsbạ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 summatortệ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