Ruby | Clase de símbolo

Los objetos de la clase Symbol representan los nombres presentes dentro del intérprete de Ruby. Por lo general, se generan usando la sintaxis literal :name o usando los métodos to_sym . Los objetos Symbol similares se crean para una string de nombre dada durante la ejecución de un programa, independientemente del contenido y el significado del nombre.

Ejemplo:

# Ruby program to illustrate 
# Symbol objects
  
# context 3
module Geeks1
  
class Max
end
$a1 = :Max
end
  
# context 1
module Geeks2
  
Max = 1
$a2 = :Max
end
  
# context 2
def Max()
  
end
  
$a3 = :Max
  
puts $a1.object_id 
puts $a2.object_id 
puts $a3.object_id 

Producción:

1675428
1675428
1675428

Explicación: si Max es una constante en context1, un método en context2 o una clase en context3, entonces este :Max será el mismo objeto en todos los contextos dados.

Método de clase

all_symbols : este método devuelve una array de símbolos que actualmente están presentes en la tabla de símbolos de Ruby.

Symbol.all_symbols

Ejemplo:

# Ruby program to illustrate 
# the use of all_symbol method
  
# Using all_symbol method
puts Symbol.all_symbols.size 
puts Symbol.all_symbols[1, 20]

Producción:

3250
"
#
$
%
&
'
(
)
*
+
,
-
.
/
:
;
<
=
>
?

Métodos de instancia

  1. id2name: este método devuelve una string que es una representación de sym .
    sym.id2name

    Ejemplo:

    # Ruby program to illustrate 
    # the use of id2name method
      
    # Using id2name method
    p :Geeks.id2name 
    p :"Welcome to GeeksforGeeks Portal".id2name

    Producción:

    "Geeks"
    "Welcome to GeeksforGeeks Portal"
    
  2. inspeccionar: este método devuelve la representación de sym en forma de símbolo literal.
    sym.inspect

    Ejemplo:

    # Ruby program to illustrate 
    # the use of inspect method
      
    # Using inspect method
    p :geeks.inspect
    p :"welcome to geeksforgeeks portal".inspect

    Producción:

    ":geeks"
    ":\"welcome to geeksforgeeks portal\""
    
  3. to_s : este método es similar a Symbol#id2name. Este método devuelve el nombre o una string que corresponde a sym .
    sym.to_s

    Ejemplo:

    # Ruby program to illustrate 
    # the use of to_s method
      
    # Using to_s method
    p :geeks.to_s
    p :"welcome to geeksforgeeks portal".to_s

    Producción:

    "geeks"
    "welcome to geeksforgeeks portal"
    
  4. <=> : Compara sym con other_sym después de llamar a to_s. Devuelve -1 si sym es menor que other_sym , devuelve 0 si sym es igual a other_sym , o devuelve +1 si sym es mayor que other_sym .
    sym <=> other_sym 

    Ejemplo:

    # Ruby program to illustrate 
    # use of <=>
      
    # Using <=>
    a= :geeks
    b = :"welcome to geeksforgeeks portal"
    puts a<=>b
    c= :geeks
    puts a<=>c
    puts b<=>a

    Producción:

    -1
    0
    1
    
  5. == : Devuelve verdadero si sym es igual a obj , de lo contrario devuelve falso.
    sym== obj

    Ejemplo:

    # Ruby program to illustrate 
    # use of ==
      
    # Using ==
    a= :geeks
    b = :"welcome to geeksforgeeks portal"
    puts a==b
    c= :geeks
    puts a==c

    Producción:

    false
    true
    
  6. []: este método devuelve el valor de sym.to_s[].
    sym[idx] --> char 
    sym[b, n] --> string
    
  7. capitalize : este método es similar a Symbol#to_s.
    sym.capitalize
  8. casecmp : este método es una versión que no distingue entre mayúsculas y minúsculas del símbolo <=$gt;. Devolverá -1, 0, 1 o cero. Se trabaja en AZ/az, no en todos los Unicode. En este método, se devuelve nil cuando los dos símbolos tienen codificaciones incompatibles o si other_sym no es un símbolo.
    sym.casecmp(other)

    Ejemplo:

    # Ruby program to illustrate 
    # use of casecmp method
      
    # Using casecmp method
    puts :GeeKs.casecmp(:geeks)
    puts :GeeKsGfg.casecmp(:geeksG)
    puts :GeeKsGfg.casecmp(:geeksGfgz)
    puts :GeeKsGfg.casecmp(3)

    Producción:

    0
    1
    -1
    nil
  9. downcase: este método convierte las letras mayúsculas en minúsculas.
    sym.downcase

    Ejemplo:

    # Ruby program to illustrate 
    # use of the downcase method
      
    # Using the downcase method
    puts :"WELCOME TO GEEKSFORGEEKS".downcase

    Producción:

    :"welcome to geeksforgeeks"
  10. longitud: este método devuelve la longitud del símbolo dado .
    sym.length

    Ejemplo:

    # Ruby program to illustrate 
    # use of length method
      
    # Using length method
    puts :GeeKsGfg.length

    Producción:

    8
  11. slice : este método es similar a Symbol#to_s . Este método le proporciona caracteres en el índice dado del sym .
    sym.slice(index)
    sym.slice(b, n)
    

    Ejemplo:

    # Ruby program to illustrate 
    # use of slice method
      
    # Using slice method
    p :GeeKsGfg.slice(3)
    p :GeeKsGfg.slice(6)

    Producción:

    "K"
    "f"
    
  12. swapcase: Este método intercambia las mayúsculas y minúsculas de los caracteres que se presentan en sym . En otras palabras, convierte minúsculas en mayúsculas y mayúsculas en minúsculas.
    sym.swapcase

    Ejemplo:

    # Ruby program to illustrate 
    # use of the swapcase method
      
    # Using swapcase method
    p "WELcome TO geeksFORGEEKS".swapcase

    Producción:

    "welCOME to GEEKSforgeeks"
  13. upcase : este método convierte los caracteres en minúsculas en mayúsculas.
    sym.upcase

    Ejemplo:

    # Ruby program to illustrate 
    # use of the upcase method
      
    # Using upcase method
    p "welcome to geeksforgeeks".upcase

    Producción:

    "WELCOME TO GEEKSFORGEEKS"
  14. to_proc: este método devuelve un objeto Proc que responde al método dado por sym .
    sym.to_proc

    Ejemplo:

    # Ruby program to illustrate 
    # use of to_proc method
      
    # Using to_proc method
    p (1..5).collect(&:to_s)

    Producción:

     ["1", "2", "3", "4", "5"]
  15. to_sym Este método devuelve un símbolo que corresponde a un objeto. Aquí sym ya ha sido un símbolo, por lo que en este caso lo devuelve.
    sym.to_sym

Referencia: https://ruby-doc.org/core-2.5.0/Symbol.html#method-i-5B-5D

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *