Articles

RubyLearning.com

<Ranges | TOC/Hashes>

symboli näyttää muuttujan nimeltä, mutta sen etuliitteenä on kaksoispiste. Esimerkkejä -: toiminta,: line_items. Symboleita ei tarvitse ilmoittaa etukäteen, ja ne ovat taatusti ainutlaatuisia. Symbolille ei tarvitse antaa mitään arvoa – Ruby huolehtii siitä puolestasi. Ruby takaa myös, että riippumatta siitä, missä se näkyy ohjelmassasi, tietyllä symbolilla on sama arvo.

vaihtoehtoisesti kaksoispisteen voi katsoa tarkoittavan ”nimettyä asiaa” joten :id on ”asia nimeltä id.”Voit myös ajatella: id tarkoittavan muuttujan id nimeä ja plain id tarkoittavan muuttujan arvoa.

symboli on alkeellisin Rubiiniobjekti, jonka voi luoda. Se on vain nimi ja sisäinen tunniste. Symbolit ovat hyödyllisiä, koska tietyn symbolin nimi viittaa samaan objektiin koko Ruby-ohjelmassa. Symbolit ovat tehokkaampia kuin Jouset. Kaksi merkkijonoa, joilla on sama sisältö, ovat kaksi eri objektia, mutta minkä tahansa nimen kohdalla on vain yksi Symboliobjekti. Tämä voi säästää sekä aikaa että muistia.

katso esimerkki: p039symbol.rb alla

tuloste, kun suoritin ohjelman tietokoneellani, oli:

siksi, milloin käytämme merkkijonoa vastaan symbolia?

  • Jos olion sisältö (merkkien järjestys) on tärkeä, käytä merkkijonoa
  • Jos olion identiteetti on tärkeä, käytä symbolia

Ruby käyttää symboleja ja ylläpitää Symbolitaulukkoa niiden pitämiseksi. Symbolit ovat nimiä-instanssimuuttujien nimiä, menetelmien nimiä, luokkien nimiä. Joten jos on menetelmä nimeltään control_movie, on automaattisesti symboli: control_movie. Ruby tulkitaan, joten se pitää Symbolipöytänsä aina käsillä. Voit selvittää, mitä se kulloinkin on soittamalla Symbol.all_symbols.
Symboliobjekti luodaan prefixaamalla operaattorin, merkkijonon, muuttujan, vakion, menetelmän, luokan, moduulin nimi kaksoispisteellä. Symboliobjekti on yksilöllinen jokaiselle eri nimelle, mutta ei viittaa nimen tiettyyn esiintymään ohjelman suorituksen ajaksi. Näin ollen, jos Fred on vakio yhdessä yhteydessä, menetelmä toisessa ja luokka kolmannessa, symboli: Fred on sama objekti kaikissa kolmessa yhteydessä.

Tämä voidaan havainnollistaa tällä yksinkertaisella ohjelmalla – p039xsymbol.rb:

lähtö, kun suoritin ohjelman tietokoneellani, oli:

tässä on toinen esimerkki – p039xysymbol.rb:

lähtö on:

tässä esimerkissä :kyllä on symboli. Symbolit eivät sisällä arvoja tai objekteja, kuten muuttujat. Sen sijaan niitä käytetään johdonmukaisena nimenä koodissa. Esimerkiksi edellisessä koodissa voit helposti korvata symbolin merkkijonolla, kuten esimerkissä-p039xyzsymbol.rb

Tämä antaa saman tuloksen, mutta ei ole yhtä tehokas. Tässä esimerkissä jokainen maininta ”Kyllä” luo uuden objektin, joka tallennetaan erikseen muistiin, kun taas symbolit ovat yksittäisiä viitearvoja, jotka alustetaan vain kerran. Ensimmäisessä koodiesimerkissä vain: kyllä on olemassa, kun taas toisessa esimerkissä päädytään siihen, että ”kyllä” ja ”kyllä” vievät muistin kokonaan.

voimme myös muuttaa merkkijonon symboliksi ja päinvastoin:

symbolit ovat erityisen hyödyllisiä hasheja luotaessa ja haluat erotella avaimet ja arvot. Katso käytännön esimerkki symbolien käytöstä Hajautusavaimina.

Fabio Akita Brasilialainen Rails-harrastaja, joka tunnetaan myös netissä nimellä ”AkitaOnRails”, kirjoitti tämän artikkelin Ruby-symboleista rubylearning.com kaltaisesi jäsenet. Lue kirjoitus käytyäsi tämän oppitunnin läpi.

Huom: Rubyn Logo on Copyright (C) 2006, Yukihiro Matsumoto. Olen tehnyt laajoja viittauksia Rubyyn liittyvään tietoon, joka on saatavilla public domainissa (wikit ja blogit, eri Ruby-gurujen artikkelit), kiitokseni ja kiitokseni heille kaikille. Paljon materiaalia päällä rubylearning.com ja kurssilla rubylearning.org on piirretty ensisijaisesti ohjelmoitavasta Ruby-kirjasta, joka on saatavilla pragmaattisesta kirjahyllystä.

<Ranges / TOC | Hashes>