Odpowiedzi:
O czym mówisz gets
?
puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
Coś w tym stylu?
Kernel.gets
próbuje odczytać parametry znalezione w programie ARGV
i pyta tylko o konsolę, jeśli nie zostaną ARGV
znalezione. Aby wymusić odczyt z konsoli, nawet jeśli ARGV
nie jest pusty, użyjSTDIN.gets
Kernel.gets
spróbuj odczytać pliki znalezione w programie ARGV
i pyta tylko o konsolę, jeśli nie zostaną ARGV
znalezione. Aby wymusić odczyt z konsoli, nawet jeśli ARGV
nie jest pusty, użyj STDIN.gets
.
a.to_i
i b.to_i
mogłoby być lepiej
gets
blokowanie? Jeśli nie, czy istnieje substytut, który blokuje?
możesz również przekazać parametry przez wiersz poleceń. Argumenty wiersza poleceń są przechowywane w tablicy ARGV. więc ARGV [0] jest pierwszą liczbą, a ARGV [1] drugą liczbą
#!/usr/bin/ruby
first_number = ARGV[0].to_i
second_number = ARGV[1].to_i
puts first_number + second_number
i tak to nazywasz
% ./plus.rb 5 6
==> 11
Istnieje wiele sposobów uzyskiwania informacji od użytkowników. Osobiście lubię korzystać z metody gets. Kiedy używasz gets, pobiera ciąg , który wpisałeś, a także klawisz ENTER , który został naciśnięty, aby zakończyć wprowadzanie.
name = gets
"mukesh\n"
Możesz to zobaczyć w irb ; wpisz to, a zobaczysz \ n, który jest znakiem „nowej linii”, który tworzy klawisz ENTER: Wpisz
name = gets
zobaczysz coś takiego, jak"mukesh\n"
Możesz pozbyć się nieznośnego znaku nowej linii używając metody chomp .
Metoda chomp zwraca łańcuch, ale bez kończącego znaku nowej linii. Piękny wybawiciel życia metodą chomp.
name = gets.chomp
"mukesh"
Możesz także użyć terminala do odczytu danych wejściowych. ARGV to stała zdefiniowana w klasie Object . Jest instancją klasy Array i ma dostęp do wszystkich metod tablicowych. Ponieważ jest to tablica, nawet jeśli jest stała, jej elementy można bez problemu modyfikować i usuwać. Domyślnie Ruby przechwytuje wszystkie argumenty wiersza poleceń przekazane do programu Ruby (podzielone na spacje), gdy wywoływany jest plik binarny wiersza poleceń i przechowuje je jako łańcuchy w tablicy ARGV .
Po napisaniu w programie Ruby, ARGV przyjmie polecenie wiersza poleceń, które wygląda następująco:
test.rb hi my name is mukesh
i utwórz tablicę, która wygląda następująco:
["hi", "my", "name", "is", "mukesh"]
Ale jeśli chcę przekazać ograniczone dane wejściowe, możemy użyć czegoś takiego.
test.rb 12 23
i użyj tych danych wejściowych w swoim programie:
a = ARGV[0]
b = ARGV[1]
Jeśli chcesz stworzyć konsolę interaktywną:
#!/usr/bin/env ruby
require "readline"
addends = []
while addend_string = Readline.readline("> ", true)
addends << addend_string.to_i
puts "#{addends.join(' + ')} = #{addends.sum}"
end
Użycie (zakładając, że umieścisz powyższy fragment w summator
pliku w bieżącym katalogu):
chmod +x summator
./summator
> 1
1 = 1
> 2
1 + 2 = 3
Użyj, Ctrl + D
aby wyjść