¿Qué hace “: =”?


111

Lo he visto :=usado en varios ejemplos de código, pero nunca con una explicación adjunta. No es exactamente posible buscar en Google su uso sin saber el nombre adecuado.

¿Qué hace?


11
¿En que idioma?
Beta

4
Normalmente lo usa :=cuando define algo, para separarlo de los cambios de variable regulares. ¿De qué lenguaje de programación estamos hablando?
svens

3
PL / SQL es para asignación. Pero dado un idioma diferente, no se garantiza que esa respuesta sea cierta, entonces, ¿en qué idiomas estaba el ejemplo?
Andrew

12
Para buscar en Google algo como esto,
escríbalo

3
¡Creo que Pascal tiene este operador!

Respuestas:


104

http://en.wikipedia.org/wiki/Equals_sign#In_computer_programming

En los lenguajes de programación de computadoras, el signo igual normalmente denota un operador booleano para probar la igualdad de valores (por ejemplo, como en Pascal o Eiffel), que es consistente con el uso del símbolo en matemáticas, o un operador de asignación (por ejemplo, como en lenguajes similares a C ). Los idiomas que hacen la primera elección a menudo usan dos puntos iguales (: =) o ≔ para denotar su operador de asignación. Los idiomas que hacen la última opción a menudo usan un signo igual doble (==) para denotar su operador de igualdad booleano.

Nota: encontré esto buscandocolon equals operator


58
Irónicamente, esta respuesta ahora está por encima de Wikipedia cuando se busca colon equals operator.
nighthawk454

6
Si seguimos escribiendo colon equals operator, hacemos magia en el SEO de Google para que este sea el mejor resultado
ATLUS

47

Es el operador de asignación en Pascal y se usa a menudo en pruebas y pseudocódigo. Es lo mismo que =en los lenguajes de dialecto C.

Históricamente, los artículos de ciencias de la computación se usaban =para comparaciones de igualdad y para asignaciones. Pascal solía :=reemplazar la flecha izquierda difícil de escribir. C tomó una dirección diferente y en su lugar se decidió por los operadores =y ==.


25

En el lenguaje de escritura estática, Go := es la inicialización y la asignación en un solo paso. Se hace para permitir la creación de variables interpretadas en un lenguaje compilado.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

Esta es una sintaxis antigua (pascal) para el operador de asignación. Se usaría así:

a := 45;

También puede estar en otros idiomas, probablemente con un uso similar.


0

En muchos libros de CS, se utiliza como operador de asignación, para diferenciarlo del operador de igualdad =. Sin embargo, en muchos lenguajes de alto nivel, la asignación es =y la igualdad ==.


0

Es como una flecha sin usar un símbolo menor que <= como si todos hubieran dicho operador de "asignación". Aportando claridad a lo que se está estableciendo en dónde en contraposición al operador lógico de equivalencia.

En matemáticas es como iguales, pero A: = B significa que A se define como B, se puede usar una barra triple igual para decir que es similar e igual por definición, pero no siempre es lo mismo.

De todos modos, señalo estas otras referencias que probablemente estaban en la mente de aquellos que lo inventaron, pero en realidad es solo que se tomaron planos iguales y menos iguales (o se confundieron potencialmente fácilmente con = <) y se necesitaba algo nuevo para definir la asignación y eso tenía más sentido.

Referencias históricas: Vi esto por primera vez en SmallTalk, el lenguaje de objetos original, del cual SJ de Apple solo copió la parte de Windows y BG de Microsoft se diluyó aún más (de un solo hilo). Finalmente, SJ in NeXT tomó la segunda lección más importante de Xerox PARC en, que se convirtió en Objective C.

Bueno, de todos modos, solo tomaron el operador de asimiento de dos puntos iguales de ALGOL 1958, que luego fue popularizado por Pascal

https://en.wikipedia.org/wiki/PARC_(company)

https://en.wikipedia.org/wiki/Assignment_(computer_science)

Las asignaciones generalmente permiten que una variable tenga diferentes valores en diferentes momentos durante su vida útil y alcance. Sin embargo, algunos lenguajes (principalmente estrictamente funcionales) no permiten ese tipo de reasignación "destructiva", ya que podría implicar cambios de estado no local. El propósito es hacer cumplir la transparencia referencial, es decir, funciones que no dependen del estado de algunas variables, pero producen los mismos resultados para un conjunto dado de entradas paramétricas en cualquier momento.

https://en.wikipedia.org/wiki/Referential_transparency


0

Para VB.net,

un constructor (para este caso, Me = esto en Java):

Public ABC(int A, int B, int C){
Me.A = A;
Me.B = B;
Me.C = C;
}

cuando creas ese objeto:

new ABC(C:=1, A:=2, B:=3)

Entonces, independientemente del orden de los parámetros, ese objeto ABC tiene A = 2, B = 3, C = 1

Entonces, sí, es una muy buena práctica para que otros lean su código de manera efectiva


-1

Colon-equals se usó en Algol y sus descendientes, como Pascal y Ada, porque es lo más cercano que ASCII llega a un símbolo de flecha izquierda.

La extraña convención de usar iguales para la asignación y dobles iguales para la comparación se inició con el lenguaje C.

En Prolog, no hay distinción entre asignación y prueba de igualdad.


Si lo quisieran cerca de la flecha izquierda, podrían haberlo usado <-como lo hizo Haskell. No estaban tratando de acercarse a la flecha izquierda con :=, estaban usando el operador matemático 'se define como': mathworld.wolfram.com/Defined.html
Variadicism

1
Alerta de pedante: <- en Haskell no es una asignación. Haskell no tiene una asignación destructiva como Pascal, Ada, etc. <- es parte de la sintaxis de notación do para la sustitución de parámetros. Es más análogo al proceso de sustitución de valores en parámetros en una llamada de subrutina.
Michael restaure a Monica Cellio

1
@Michael Fair. Tienes razón. Culpa mía. De todos modos, el punto sigue siendo que si estuvieran intentando imitar la flecha izquierda, no habrían utilizado :=, habrían utilizado <-.
Variadicismo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.