Kurzusok
/
Ruby
Ruby
/
Tanterv
/
Szimbólumok
Sz

Szimbólumok ebben a kurzusban: Ruby

1 feladat

A(z) Szimbólumok fogalomról

A szimbólumok névvel ellátott azonosítók, amelyekkel egy értékre lehet hivatkozni. A szimbólumok szimbólumliterálokkal jönnek létre: ilyenkor a név elé egy : karaktert írunk, például :foo. Idézőjelekkel is leírhatók, például :"foo", ami például szóközöket is lehetővé tesz a névben.

:foo # => :foo
:"foo boo" # => :"foo boo"

A szimbólumokat a nyelv sok helyén használjuk, többek között hash-ek kulcsaiként, metódusnevek és változónevek jelölésére.

Azonosító

A szimbólumok abban különböznek a stringektől, hogy azonosítók: nem adatot vagy szöveget képviselnek. Ez azt jelenti, hogy két azonos nevű szimbólum mindig ugyanaz az objektum.

"foo".object_id # => 60
"foo".object_id # => 80
:foo.object_id # => 1086748
:foo.object_id # => 1086748

Szimbólumok módosítása

A szimbólumok megváltoztathatatlanok, ami azt jelenti, hogy nem lehet őket módosítani. Ezért amikor „módosítasz” egy szimbólumot, valójában egy új szimbólumot hozol létre. Néhány metódussal lehet szimbólumokat manipulálni, és ezek mind új szimbólumot adnak vissza. Az összes metódus a Symbol API oldalon található.

:foo.upcase # => :FOO

:foo.object_id # => 1086748
:foo.upcase.object_id # => 60

Az, hogy a szimbólumok megváltoztathatatlanok, két előnnyel jár: memóriahatékonyabbak, mint a stringek, és biztonságosabbak azonosítóként.

Átalakítás

A szimbólumokat stringgé lehet alakítani, és fordítva. Ez akkor hasznos, ha módosítani szeretnél egy szimbólumot, vagy ha szimbólumot szeretnél stringként használni. Ha egy stringet szimbólumként szeretnél megjeleníteni, a String#to_sym metódust használhatod; az ellenkezőjéhez pedig a Symbol#to_s metódust. Mivel a szimbólumoknak korlátozott számú metódusuk van, hasznos lehet szimbólumot stringgé alakítani, hogy stringmetódusokat használhass rajta, ha új szimbólumra van szükség.

:foo.to_s # => "foo"
"foo".to_sym # => :foo

Nevek lekérése a scope-okban

Rubyban különféle metódusokkal kérheted le a neveket egy scope-ból: konstansok, metódusok és változók neveit. Ezek a metódusok szimbólumokból álló tömböket adnak vissza.

Ilyen metódus például a Module#constants, a Module#instance_methods, a Module#class_variables, a global_variables és a local_variables.

module Foo
  BAR = 1
  def self.baz; end
end

a = 1

Foo.constants # => [:BAR]
Foo.instance_methods # => [:baz]

local_variables # => [:a]

Az összes metódus a Kernel API és a Module API oldalon található.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Szimbólumok fogalmat