Articles

RubyLearning.com

<Rozsahy | TOC | Hash>

symbol vypadá jako název proměnné, ale je to s předponou tlustého střeva. Příklady -: akce,: line_items. Nemusíte předem deklarovat symbol a je zaručeno, že budou jedinečné. Není třeba přiřadit nějaký druh hodnoty symbolu-Ruby se o to postará za vás. Ruby také zaručuje, že bez ohledu na to, kde se ve vašem programu objeví, bude mít určitý symbol stejnou hodnotu.

Alternativně můžete dvojtečku považovat za „věc s názvem“, takže :id je “ věc s názvem id.“Můžete také myslet na :id jako na název proměnné id a plain id jako na hodnotu proměnné.

Symbol je nejzákladnější objekt Ruby, který můžete vytvořit. Je to jen jméno a interní ID. Symboly jsou užitečné, protože daný název symbolu odkazuje na stejný objekt v celém programu Ruby. Symboly jsou účinnější než řetězce. Dva řetězce se stejným obsahem jsou dva různé objekty, ale pro jakékoli jméno existuje pouze jeden objekt symbolu. To může ušetřit čas i paměť.

viz příklad: p039symbol.rb níže

výstup při spuštění programu v počítači byl:

kdy tedy použijeme řetězec versus symbol?

  • Pokud obsah (posloupnost znaků) v objektu jsou důležité, použít řetězec
  • Pokud identita objektu je důležité, použijte symbol

Ruby používá symboly, a udržuje Symbol Tabulky je držet. Symboly jsou názvy-názvy proměnných instance, názvy metod, názvy tříd. Pokud tedy existuje metoda nazvaná control_movie, automaticky existuje symbol: control_movie. Ruby je interpretována, takže má svůj symbolický stůl po ruce po celou dobu. Můžete zjistit, co je na něm v daném okamžiku voláním Symbol.all_symbols.
objekt symbolu je vytvořen prefixem operátoru, řetězce, proměnné, konstanty, metody, třídy, názvu modulu dvojtečkou. Objekt symbolu bude jedinečný pro každý jiný název, ale neodkazuje na konkrétní instanci názvu po dobu provádění programu. Pokud je tedy Fred konstanta v jednom kontextu, metoda v jiném A třída ve třetím, Symbol: Fred bude stejný objekt ve všech třech kontextech.

to lze ilustrovat tímto jednoduchým programem-p039xsymbol.rb:

výstup při spuštění programu v počítači byl:

zde je další příklad-p039xysymbol.RB:

výstup je:

v tomto příkladu: Ano je symbol. Symboly neobsahují hodnoty ani objekty, jako proměnné. Místo toho se používají jako konzistentní název v kódu. Například v předchozím kódu můžete symbol snadno nahradit řetězcem, jako v příkladu-p039xyzsymbol.RB

to dává stejný výsledek, ale není tak efektivní. V tomto příkladu každá zmínka o “ ano “ vytvoří nový objekt uložený Samostatně v paměti, zatímco symboly jsou jediné referenční hodnoty, které jsou inicializovány pouze jednou. V prvním příkladu kódu existuje pouze: Ano, Zatímco ve druhém příkladu skončíte s úplnými řetězci “ Ano “ a „ano“, které zabírají paměť.

můžeme také transformovat řetězec na Symbol a naopak:

symboly jsou zvláště užitečné při vytváření hashů a chcete rozlišovat mezi klíči a hodnotami. Viz použití symbolů jako hash klíče pro praktický příklad.

Fabio Akita Brazilský nadšenec kolejnic, známý také online jako „AkitaOnRails“, napsal tento exkluzivní článek o rubínových symbolech pro rubylearning.com členové jako vy. Přečtěte si článek poté, co jste prošli touto lekcí.

Poznámka: logo Ruby je Copyright (c) 2006, Yukihiro Matsumoto. Udělal jsem rozsáhlé odkazy na informace, týkající se Ruby, k dispozici ve veřejné doméně (wiki a blogy, články z různých Ruby Guru), moje uznání a díky všem z nich. Hodně materiálu na rubylearning.com a v kurzu na rubylearning.org vychází především z programové rubínové knihy, dostupné z pragmatické knihovny.

< rozsahy / TOC / hashe>