La diferencia entre $, @@ y @ en Ruby (explicación): todas las diferencias

Suelen ser prefijos para nombres de variables que describen el rango de la variable. Las variables globales son aquellas cuyo nombre comienza con $ y se puede acceder de la misma manera desde cualquier parte del programa.

Las variables de clase son variables cuyos nombres comienzan con @@. Cada objeto que accede a él recibe el mismo valor.

Tan pronto como se necesita la clase en la aplicación, normalmente se les proporciona espacio de memoria y solo pueden tener una instancia. Estas se conocen como variables estáticas en Java si está familiarizado con ese lenguaje.

Finalmente, las variables que comienzan con @ son variables de instancia, lo que significa que son exclusivas del objeto que ahora contienen. Para varias instancias de la clase, sus valores varían.

A cada elemento recién generado se le asigna su área de memoria.

En este artículo, discutiremos las diferencias entre $, @@ y @ en el contexto de Rubí. Conocerá los detalles con un montón de conocimientos al respecto.

En general, sería un blog informativo.

Empecemos.

¿Qué es $, @@ y @ en Ruby?

Una variable global es $. Mientras que, @-> es un instancia variable, similar a init en Python. @@ es una variable de clase. El rango de la variable que está configurando es lo que marca la diferencia.

Una variable global llamada $ está disponible en toda la aplicación. Todas las instancias de una clase tienen acceso a la variable de clase @@.

@ es una variable de instancia de clase que solo puede usar esa instancia de clase en particular.

En general, debe repensar su enfoque del tema en cuestión si está utilizando variables $global o $, y @class porque probablemente esté haciendo algo mal.

En Ruby on Rails, ¿qué hace «&»?

Existen varias opciones para la forma binaria, según el tipo de entrada: AND bit a bit, similar a C, para números enteros como 3 y 1.

Intersección de matrices para matrices como [1, 2, 3] y [3, 4, 5]. (ignorando los valores duplicados).

La forma unaria es la siguiente: &: foo: transforma el elemento proporcionado en un proceso (esencialmente, un bloque de código ejecutable).

Por otro lado, A = [] denota que «a» es un objeto de la clase «Array». Esta es la sintaxis de una matriz 2D que está vacía, pero necesitamos más detalles para comprenderla.

¿Qué hace que “Ruby” y “M Ruby” sean diferentes entre sí?

El mismo autor creó cada uno de ellos. Ruby fue seguido por M Ruby. Muchos de sus rasgos lingüísticos, sintaxis y bibliotecas estándar son heredados por él.

Sin embargo, M Ruby está diseñado para sistemas integrados, que tienen limitaciones de recursos más severas. Incluso el arranque del compilador fuente de Ruby usa Mruby.

Son incompatibles binariamente y hablan idiomas separados. Para resumir podemos decir que son muy parecidos.

$, @@ y @- ¿Qué los diferencia?

El alcance de la variable que está configurando es la diferencia. $ es una variable global que se puede utilizar en toda la aplicación. Es una variable de clase global que afecta a todas las instancias de la clase.

@ es una variable de instancia de clase que solo está disponible para la instancia de esa clase.

En general, si está utilizando variables globales o de clase para resolver un problema, generalmente está haciendo algo incorrectamente y debe reconsiderar su enfoque.

Viniendo hacia $, esta es una variable global.

A menos que esté creando un script independiente muy pequeño, no use variables globales. Usa una constante si quieres algo global que no cambie.

¿Cuáles son las excepciones entre $ y las otras variables?

$1, $2, así como $&, $’, $’, $+ y $, no son variables globales. Son subprocesos relacionados con expresiones regulares y variables locales de método. Ni siquiera puedes cambiar sus valores manualmente.

Una variable que solo se usa una vez. Es similar al campo no estático de Java.

La diferencia entre las variables de instancia y los campos de Java es que debe crear una variable de instancia en un método de instancia (incluida la función Object() { [native code] }).

Este es el caso si desea que pertenezca a un objeto normal; de lo contrario, la variable de instancia pertenece a la clase pero no es una variable de clase.

Considere el siguiente escenario:

Foo class @foo = 1 es la clase a la que pertenece esta variable de instancia. Esta variable de instancia pertenece a un objeto normal @foo = 2 end def initialize

self.bar=(value) def @bar = value end es la clase de esta instancia variable.

Una imagen que muestra falso y función escritaFalso, Función, Verdadero y Línea son algunas de las pseudovariables.

¿Qué significa @@ de Ruby?

@@ denota una variable de clase, lo que significa que se puede heredar. Esto significa que si crea una subclase de esa clase, la variable se le pasará.

Si tiene un vehículo de clase con la variable de clase @@número de ruedas, puede construir un vehículo de automóvil de clase con la misma variable de clase.

Las variables locales, globales, de instancia y de clase son los cuatro tipos de variables en Ruby. Cuando usa @instance var, todos los métodos de instancia tienen acceso a la instancia var.

En los métodos de clase, usamos @@ antes de una variable para informar a Ruby que acceda al atributo de esa clase (variable de clase). Cuando usa @@class var, class var está disponible para toda la clase.

Una variable de clase se crea en Ruby usando el doble signo de arroba (@@) antes de un nombre de variable (por ejemplo, @@nombre de variable).

Estas son las variables:

  • Estático: es decir, independientemente de cuántas instancias de la clase cree, solo existe una copia de la variable;
  • Dentro del contexto de la jerarquía de herencia, tienen un alcance global, es decir, son compartidos por una clase y todas sus subclases.

Estamos casi a la mitad del artículo, espero que ahora esté bastante familiarizado con estas variables. ¿no es así?

Una imagen que muestra palabras y otros datos de un lenguaje informático.Las funciones y los prototipos incluyen paréntesis como entrada.

En Ruby, ¿cuál es la diferencia entre & & And y ‘||’ Y ‘o’ En Ruby?

El orden de precedencia es la distinción entre & & y y y o en Ruby. El operador tiene una prioridad más alta que el operador.

Sin embargo, hasta que se combinen con operadores que se encuentran entre estos dos, como los operadores ternario y de asignación, esto no suele ser un problema.

¡Esto puede ser una sorpresa agradable!

Permítanme usar un ejemplo para demostrar.

s significa «verdadero» y «falso».

verdadero => falso

Veamos el valor de s, que devolvió la declaración.

¡Esto puede ser una sorpresa agradable! Lo que sucedió fue que la tarea se completó primero, seguida de la condición «y».

En Ruby, ¿cómo se diferencia entre @variable y @@variable?

El signo de arroba (@) se usa antes de un nombre de variable en Ruby para construir una variable de instancia de clase (por ejemplo, @nombre de variable). Estas son las variables:

Esta es la única variable que está disponible dentro de los métodos de clase; directamente. únicos para cada objeto instanciado de la clase en la que están definidos (es decir, cada instancia de objeto de clase tiene su copia de estas variables).

Las variables con un solo signo de arroba (es decir, @variable) son variables de instancia de clase, pero las variables con dos signos de arroba (es decir, @@variable) son variables de clase en Ruby. Es decir:

Solo se puede acceder directamente a @variable dentro de los métodos de clase. se define en, mientras que @@variable se comparte entre una clase y todas sus subclases y ancestros.

Como en;

@@total = 0 tipo Persona

@nombre = nombre @@total += 1 end def initialize(nombre)

end def self.total @@total

nombre:accesorio attr

Una imagen que muestra la configuración de una computadora.Una computadora comprende un script Java y otros lenguajes binarios y variables.

¿Qué son las pseudovariables en Ruby?

Son variables únicas que parecen variables locales pero se comportan como constantes. No puede dar a estas variables ningún valor.

Las siguientes tablas describen las pseudovariables en Ruby.

SELFEl objeto receptor del método actual es self.FALSEFalse es un valor que representa la palabra «falso»._LINE_El número de línea actual del archivo fuente.TRUE Un valor que representa el hecho de que algo es verdadero._FILE_El nombre del archivo fuente actual.La descripción de pseudo- Variables

¿Qué son las variables globales?

Un símbolo “$” precede al nombre de una variable global. Tiene un alcance global, lo que significa que se puede acceder a él en cualquier punto de un programa.

Se asignará un valor nulo a una variable global no inicializada. No se recomienda su uso ya que hacen que las aplicaciones sean oscuras y difíciles.

Hay numerosas variables globales incluidas en Ruby.

Echemos un vistazo a un ejemplo:

!/usr/bin/rubí

clase var $global = “GLOBAL”

«La variable global en One es #$global var», dice una de las pantallas de definición de la clase.

La pantalla de dos definiciones concluye: «La variable global en Dos es # $var global».

Uno.nuevo oneobj.display = Uno.nuevo oneobj

En el ejemplo anterior, twoobj.display = Two.new [email protected] nombre es la variable de instancia.

Creo que ahora está bastante claro cómo clasificar por categorías varias variables en Ruby.

Mire este video para saber más sobre las variables de clase en Ruby.

Conclusión

Para concluir:

  • $, @@ y @ son diferentes tipos de variables utilizadas en Ruby. Tienen características distintivas.
  • Una variable con el prefijo “@” es una variable de clase, mientras que una con el prefijo “es una variable de instancia.
  • Variable antes del nombre de una variable: variable de instancia (una por instancia). Cada clase tiene una variable estática.
  • El orden de precedencia es la distinción entre & & y o en Ruby. El operador tiene una prioridad más alta que el operador.
  • Sin embargo, hasta que se combinen con operadores que se encuentran entre estos dos, como los operadores ternario y de asignación, esto no suele ser un problema.
  • Las variables de nombre y edad (que se declaran como variables de instancia en la clase Person) se duplican en cada instancia de objeto instanciado de la clase Person.

He explicado las variaciones con la ayuda de algunos ejemplos para que puedas tener una comprensión profunda de las distinciones entre ellas.

¿Quieres saber la diferencia entre SSD y NVME? Eche un vistazo a este artículo: La diferencia entre SSD y NVMe (respuesta)

Otros artículos

¿Es 1 ml de cipionato de testosterona de 200 mg demasiado poco para hacer una diferencia en la testosterona baja? (Hechos)

Monopatín vs. Casco de bicicleta (Explicación de la diferencia)

helicóptero vs. Helicóptero: una comparación detallada

Deja un comentario