Articles

RubyLearning.com

<Ranges | TOC | Hashes>

een symbool lijkt op een variabelnaam, maar wordt voorafgegaan door een dubbele punt. Voorbeelden -: actie,: line_items. Je hoeft geen pre-declaratie van een symbool en ze zijn gegarandeerd uniek. Er is geen noodzaak om een soort van waarde toe te wijzen aan een symbool – Ruby zorgt voor dat voor u. Ruby garandeert ook dat het niet uitmaakt waar het verschijnt in uw programma, een bepaald symbool zal dezelfde waarde hebben.

als alternatief kun je de dubbele punt beschouwen als “thing named”, dus :id is “the thing named id.”Je kunt ook denken aan :id als de naam van de variabele id, en plain id als de waarde van de variabele.

een symbool is het meest basale Ruby object dat u kunt maken. Het is maar een naam en een interne ID. Symbolen zijn nuttig omdat een gegeven symbool naam verwijst naar hetzelfde object in een Ruby programma. Symbolen zijn efficiënter dan strings. Twee strings met dezelfde inhoud zijn twee verschillende objecten, maar voor elke gegeven naam is er slechts één symbool object. Dit kan zowel tijd als geheugen besparen.

zie het voorbeeld: p039symbol.rb onder

De uitvoer toen ik het programma op mijn PC uitvoerde was:

Daarom, wanneer gebruiken we een tekenreeks versus een symbool?

  • als de inhoud (de reeks tekens) van het object belangrijk is, gebruik dan een tekenreeks
  • als de identiteit van het object belangrijk is, gebruik dan een symbool

Ruby gebruikt symbolen en onderhoudt een Symbolentabel om deze te bevatten. Symbolen zijn namen – namen van instance variabelen, namen van methoden, namen van klassen. Dus als er een methode genaamd control_movie is, is er automatisch een symbool: control_movie. Ruby wordt geïnterpreteerd, dus het houdt zijn Symbolentafel altijd bij de hand. U kunt ontdekken wat er op elk moment door te bellen symbool.all_symbols.
Een Symboolobject wordt gemaakt door een operator, string, variabele, constante, methode, klasse, modulenaam voor te schrijven met een dubbele punt. Het symbool object zal uniek zijn voor elke verschillende naam, maar verwijst niet naar een bepaalde instantie van de naam, voor de duur van de uitvoering van een programma. Dus, als Fred een constante is in een context, een methode in een andere, en een klasse in een derde, zal het symbool :Fred hetzelfde object zijn in alle drie contexten.

Dit kan worden geïllustreerd door dit eenvoudige programma – p039xsymbol.rb:

De uitvoer toen ik het programma op mijn PC uitvoerde was:

Hier is een ander voorbeeld – p039xysymbol.rb:

De uitvoer is:

In dit voorbeeld is :yes een symbool. Symbolen bevatten geen waarden of objecten, zoals variabelen. In plaats daarvan worden ze gebruikt als een consistente naam binnen code. Bijvoorbeeld, in de vorige code kunt u eenvoudig het symbool vervangen door een string, zoals in voorbeeld – p039xyzsymbol.rb

Dit geeft hetzelfde resultaat, maar is minder efficiënt. In dit voorbeeld creëert elke vermelding van ‘ja’ een nieuw object dat afzonderlijk in het geheugen wordt opgeslagen, terwijl symbolen enkele referentiewaarden zijn die slechts één keer worden geïnitialiseerd. In het eerste code voorbeeld, alleen :Ja bestaat, terwijl in het tweede voorbeeld je eindigt met de volledige strings van ‘ja’ en ‘ja’ nemen het geheugen.

we kunnen ook een tekenreeks omzetten in een symbool en vice versa:

symbolen zijn bijzonder nuttig bij het maken van hashes en u wilt een onderscheid maken tussen sleutels en waarden. Raadpleeg het gebruik van symbolen als Hash Keys voor een praktisch voorbeeld.

Fabio Akita een Braziliaanse Rails liefhebber, ook online bekend als “AkitaOnRails”, schreef dit exclusieve artikel over Ruby symbolen voor de rubylearning.com leden zoals jij. Lees het artikel, nadat je deze les hebt doorlopen.

Opmerking: Het Ruby-Logo is Copyright (c) 2006, Yukihiro Matsumoto. Ik heb uitgebreide verwijzingen gemaakt naar informatie, gerelateerd aan Ruby, beschikbaar in het publieke domein (wiki ‘ s en de blogs, artikelen van verschillende Ruby Goeroes), mijn erkenning en dank aan hen allemaal. Veel van het materiaal op rubylearning.com en in de cursus bij rubylearning.org komt voornamelijk uit het Programmeerboek Ruby book, verkrijgbaar bij de Pragmatic Bookshelf.

<bereiken / TOC / Hashes>