Ruby:
Tausta
Samoin kuin Rubyssä välitämme argumentteja metodeille, voimme välittää argumentteja myös kokonaisille ohjelmille. Juuri sitä komentoriviargumentit tekevät. Joka kerta, kun suoritamme Ruby-ohjelmamme, voimme syöttää eri komentoriviargumentteja ja saada erilaisia tuloksia.
Miksi opit sen?##
Ruby-oppitunnilla nimeltä Putting the Form in Formatter käytit gets.chomp
:ää tuodaksesi käyttäjän syötteet Ruby-ohjelmaasi. Komentoriviargumenttien käyttäminen lisää Rubyn työkaluvyöhön uuden työkalun, jolla voit halutessasi saada käyttäjän syötteen ohjelmaasi.
Komentoriviargumenttien käyttäminen##
Ruby kaappaa komentoriviargumentit erityisellä matriisilla nimeltä ARGV
. Kun se kirjoitetaan Ruby-ohjelmasi sisälle, ARGV
ottaa komentorivikomennon, joka näyttää tältä:ruby testing_argv.rb these are elements in the argv array
ja luo tämän näköisen joukon:
Kokeile nyt!
Kokeile ARGV##
- Luo Sublime Textissä tiedosto nimeltä
testing_argv.rb
menemällä kohtaan Tiedosto > Uusi tiedosto … - Luotuasi testitiedostosi tallenna se johonkin helposti löydettävään paikkaan, ja aletaan kirjoittaa koodia!
- Asetetaan
ARGV
kaappaamaan komentoriviargumentitKohdistatesting_argv.rb
:n sisälläARGV
matriisiin nimeltäinput_array
, joka sitooARGV
:n sisällön muuttujaan.
Sen vuoksi, että ARGV
luo matriisin, voit kutsua mitä tahansa metodia, jota voit kutsua tavalliselle matriisille, myös matriisiin input_array
. Esimerkiksi puts input_array.length
palauttaa käyttäjän antamien argumenttien määrän.
Voit myös tulostaa ARGV
-massion tulokset käyttämällä puts input_array.to_s
. Täydellinen testing_argv.rb
-tiedosto voi näyttää jotakuinkin tältä:
Testataksesi tiedostoasi suorita ohjelma komentoriviltä useilla argumenteilla tiedostonimen perässä, esimerkiksi näin: ruby testing_argv.rb these are elements in the argv array
Komentorivilläsi pitäisi kertoa, että joukossa on 7 kohdetta, ja tulostaa ne konsoliin, esimerkiksi näin:
Splatin käyttäminen ensimmäisen argumentin erottamiseen lopuista##
Ohjelmassasi haluat ehkä käyttää ensimmäistä komentorivin argumenttia komentona, ja käyttää loput argumentit sitten merkkijonona, jolla voit tehdä asioita. Tässä on uusi Rubyn lauseke, jonka avulla voit toteuttaa tämän yksinkertaisesti: first_arg, *the_rest = ARGV
Tässä osoitat kaksi muuttujaa samaan aikaan! Pilkku erottaa ne toisistaan, ja *
on nimeltään splat. Olet käyttänyt splatia vastaavalla tavalla Codecademyn oppitunnilla Rubyn metodeista, lohkoista ja lajittelusta. *
:n takia Ruby tietää kohdistaa ARGV
:n first_arg
:ään ja loput argumentit the_restiin. Todistetaan se:
Kirjoita ohjelmaasi: puts first_arg
puts the_rest
Sitten suorita ruby testing_argv.rb first and all the rest!
komentorivin sisällä.
##Miten voit käyttää tätä tekniikkaa?##Komentorivi voi olla tehokas käyttöliittymä kirjoittamallesi ohjelmalle. Näiden menetelmien avulla voit kaapata käyttäjän syötteen ja käyttää sitä sitten hyödyksi.
Jos esimerkiksi rakensit Rubyllä pankkiautomaattiohjelman, voit käyttää komentoriviargumentteja metodien kutsumiseen ja pankkitilin muokkaamiseen. Voisit kirjoittaa ARGV-matriisin, joka ottaa ensimmäisen komentorivin argumentin suorittaakseen metodin, kuten ”withdraw”, ja sitten käyttää sen jälkeisiä argumentteja, ehkä ”$20”, määrittelemään, kuinka paljon rahaa nostetaan.
On loputtomasti tapoja käyttää ARGV:tä ja splatsia saadaksesi dataa komentoriviltä ja laittaaksesi sen tekemään jotakin puolestasi. Jos haluat perehtyä ARGV:n toimintaan, tutustu sen Ruby-dokumenttiin täällä.