Saya berbicara tentang Ruby tapi bukan ROR. Tidak ada kabar di sana tentang masukan dari konsol.
Sergey
Jawaban:
228
Apa yang kamu bicarakan gets?
puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
Sesuatu seperti itu?
Memperbarui
Kernel.getsmencoba membaca parameter yang ditemukan di ARGVdan hanya meminta untuk menghibur jika tidak ARGVditemukan. Untuk memaksa membaca dari konsol meskipun ARGVtidak kosong digunakanSTDIN.gets
Saya memiliki konflik dengan solusi ini: Kernel.getscoba baca file yang ditemukan ARGVdan hanya minta konsol jika tidak ARGVditemukan. Untuk memaksa membaca dari konsol meskipun ARGVtidak kosong digunakan STDIN.gets.
fguillen
3
a.to_idan b.to_ibisa lebih baik
Dorian
adalah getsmemblokir? Jika tidak, apakah ada pengganti yang memblokir?
noMAD
1
@fguillen itu jawaban yang bagus dan tidak boleh disembunyikan di komentar. Bisakah Anda menjawabnya? Terima kasih!
Dan Rosenstark
2
@Yar terima kasih atas sarannya, saya telah menambahkan pembaruan ke jawabannya sendiri.
fguillen
28
Anda juga dapat meneruskan parameter melalui baris perintah. Argumen baris perintah disimpan dalam array ARGV. jadi ARGV [0] adalah angka pertama dan ARGV [1] adalah angka kedua
Ada banyak cara untuk menerima masukan dari pengguna. Saya pribadi suka menggunakan metode mendapat. Saat Anda menggunakan get, ia mendapatkan string
yang Anda ketikkan, dan itu termasuk tombol ENTER yang Anda tekan untuk mengakhiri input Anda.
name = gets
"mukesh\n"
Anda dapat melihat ini di irb ; ketik ini dan Anda akan melihat \ n, yang merupakan karakter “baris baru” yang dihasilkan oleh tombol ENTER: Ketik name = getsAnda akan melihat sesuatu seperti "mukesh\n"
Anda dapat menyingkirkan karakter baris baru yang mengganggu menggunakan metode chomp .
Metode chomp memberi Anda kembali string, tetapi tanpa mengakhiri baris baru. Penyelamat hidup metode chomp yang indah.
name = gets.chomp
"mukesh"
Anda juga dapat menggunakan terminal untuk membaca input. ARGV adalah konstanta yang ditentukan di kelas Object . Ini adalah turunan dari kelas Array dan memiliki akses ke semua metode array. Karena ini adalah sebuah array, meskipun itu adalah konstanta, elemen-elemennya dapat dimodifikasi dan dibersihkan tanpa masalah. Secara default, Ruby menangkap semua argumen baris perintah yang diteruskan ke program Ruby (dipisahkan oleh spasi) ketika biner baris perintah dipanggil dan menyimpannya sebagai string dalam array ARGV .
Saat ditulis di dalam program Ruby Anda, ARGV akan mengambil perintah baris perintah yang terlihat seperti ini:
test.rb hi my name is mukesh
dan buat larik yang terlihat seperti ini:
["hi","my","name","is","mukesh"]
Tapi, jika saya ingin memberikan input terbatas maka kita bisa menggunakan sesuatu seperti ini.
test.rb 1223
dan gunakan masukan tersebut seperti ini dalam program Anda:
Jawaban:
Apa yang kamu bicarakan
gets
?Sesuatu seperti itu?
Memperbarui
Kernel.gets
mencoba membaca parameter yang ditemukan diARGV
dan hanya meminta untuk menghibur jika tidakARGV
ditemukan. Untuk memaksa membaca dari konsol meskipunARGV
tidak kosong digunakanSTDIN.gets
sumber
Kernel.gets
coba baca file yang ditemukanARGV
dan hanya minta konsol jika tidakARGV
ditemukan. Untuk memaksa membaca dari konsol meskipunARGV
tidak kosong digunakanSTDIN.gets
.a.to_i
danb.to_i
bisa lebih baikgets
memblokir? Jika tidak, apakah ada pengganti yang memblokir?Anda juga dapat meneruskan parameter melalui baris perintah. Argumen baris perintah disimpan dalam array ARGV. jadi ARGV [0] adalah angka pertama dan ARGV [1] adalah angka kedua
dan Anda menyebutnya seperti ini
sumber
Ada banyak cara untuk menerima masukan dari pengguna. Saya pribadi suka menggunakan metode mendapat. Saat Anda menggunakan get, ia mendapatkan string yang Anda ketikkan, dan itu termasuk tombol ENTER yang Anda tekan untuk mengakhiri input Anda.
Metode chomp memberi Anda kembali string, tetapi tanpa mengakhiri baris baru. Penyelamat hidup metode chomp yang indah.
Anda juga dapat menggunakan terminal untuk membaca input. ARGV adalah konstanta yang ditentukan di kelas Object . Ini adalah turunan dari kelas Array dan memiliki akses ke semua metode array. Karena ini adalah sebuah array, meskipun itu adalah konstanta, elemen-elemennya dapat dimodifikasi dan dibersihkan tanpa masalah. Secara default, Ruby menangkap semua argumen baris perintah yang diteruskan ke program Ruby (dipisahkan oleh spasi) ketika biner baris perintah dipanggil dan menyimpannya sebagai string dalam array ARGV .
Saat ditulis di dalam program Ruby Anda, ARGV akan mengambil perintah baris perintah yang terlihat seperti ini:
dan buat larik yang terlihat seperti ini:
Tapi, jika saya ingin memberikan input terbatas maka kita bisa menggunakan sesuatu seperti ini.
dan gunakan masukan tersebut seperti ini dalam program Anda:
sumber
jika Anda ingin menahan argumen dari Terminal, coba kode berikut:
sumber
Jika Anda ingin membuat konsol interaktif:
Penggunaan (dengan asumsi Anda meletakkan cuplikan di atas ke dalam
summator
file di direktori saat ini):Gunakan
Ctrl + D
untuk keluarsumber