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##

  1. Luo Sublime Textissä tiedosto nimeltä testing_argv.rb menemällä kohtaan Tiedosto > Uusi tiedosto …
  2. Luotuasi testitiedostosi tallenna se johonkin helposti löydettävään paikkaan, ja aletaan kirjoittaa koodia!
  3. Asetetaan ARGV kaappaamaan komentoriviargumentitKohdista testing_argv.rb:n sisällä ARGV matriisiin nimeltä input_array, joka sitoo ARGV:n sisällön muuttujaan.

ARGV-esimerkki-1

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ä:

ARGV-Example-2

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:

ARGV Console Output Example 1

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_argputs 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ä.