Looking for ruby Keywords? Try Ask4Keywords

Ruby LanguageDes symboles


Syntaxe

  • :symbole
  • :'symbole'
  • :"symbole"
  • "symbole" .to_sym
  • % s {symbole}

Remarques

Avantages de l'utilisation de symboles sur des chaînes:

1. Un symbole Ruby est un objet avec une comparaison O (1)

Pour comparer deux chaînes, nous devons potentiellement examiner chaque caractère. Pour deux chaînes de longueur N, cela nécessitera des comparaisons N + 1

def string_compare str1, str2
  if str1.length != str2.length
        return false
  end
  for i in 0...str1.length
    return false if str1[i] != str2[i]
  end
  return true
end
string_compare "foobar", "foobar"

Mais puisque chaque apparition de: foobar fait référence au même objet, nous pouvons comparer des symboles en examinant les ID d'objet. Nous pouvons le faire avec une seule comparaison. (O (1))

def symbol_compare sym1, sym2
  sym1.object_id == sym2.object_id
end
symbol_compare :foobar, :foobar

2. Un symbole Ruby est une étiquette dans une énumération de forme libre

En C ++, nous pouvons utiliser des «énumérations» pour représenter des familles de constantes associées:

enum BugStatus { OPEN, CLOSED };
BugStatus original_status = OPEN;
BugStatus current_status  = CLOSED;

Mais comme Ruby est un langage dynamique, nous ne nous soucions pas de la déclaration d'un type BugStatus ou du suivi des valeurs légales. Au lieu de cela, nous représentons les valeurs d'énumération sous forme de symboles:

original_status = :open
current_status  = :closed

3. Un symbole Ruby est un nom unique et constant

En Ruby, on peut changer le contenu d'une chaîne:

"foobar"[0] = ?b # "boo"

Mais nous ne pouvons pas changer le contenu d'un symbole:

:foobar[0]  = ?b # Raises an error

4. Un symbole Ruby est le mot-clé d'un argument de mot-clé

Lorsque vous transmettez des arguments à une fonction Ruby, nous spécifions les mots-clés à l'aide de symboles:

# Build a URL for 'bug' using Rails.
url_for :controller => 'bug',
        :action => 'show',
        :id => bug.id

5. Un symbole Ruby est un excellent choix pour une clé de hachage

En règle générale, nous utiliserons des symboles pour représenter les clés d'une table de hachage:

options = {}
options[:auto_save]     = true
options[:show_comments] = false

Des symboles Exemples Liés