transportation the significado programming lenguaje language español descargar swift

the - swift wikipedia



¿Cuál es la diferencia entre `let` y` var` en swift? (26)

“Usa let para hacer una constante y var para hacer una variable”

Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/us/jEUH0.l

¿Cuál es la diferencia entre let y var en el lenguaje Swift de Apple?

A mi entender, es un lenguaje compilado pero no comprueba el tipo en tiempo de compilación. Me confunde. ¿Cómo sabe el compilador sobre el error de tipo? Si el compilador no comprueba el tipo, ¿no es un problema con el entorno de producción?


Al igual que Luc-Oliver, NullData y algunos otros que han dicho aquí, let definir datos inmutables, mientras que var define datos mutables. Cualquier func que se pueda llamar en la variable marcada como mutating solo se puede llamar si es una variable var (el compilador generará un error). Esto también se aplica a las func que toman una variable de entrada.

Sin embargo, let y var también significan que la variable no se puede reasignar. Tiene dos significados, ambos con propósitos muy similares.


Aunque actualmente sigo leyendo el manual, pero creo que esto está muy cerca del puntero const C / C ++. En otras palabras, algo parecido a la diferencia entre char const* y char* . El compilador también se niega a actualizar el contenido, no solo a la reasignación de referencias (puntero).

Por ejemplo, digamos que tienes esta estructura. Tenga cuidado de que esto sea una estructura, no una clase. AFAIK, las clases no tienen un concepto de estado inmutable.

import Foundation struct AAA { var inner_value1 = 111 mutating func mutatingMethod1() { inner_value1 = 222 } } let aaa1 = AAA() aaa1.mutatingMethod1() // compile error aaa1.inner_value1 = 444 // compile error var aaa2 = AAA() aaa2.mutatingMethod1() // OK aaa2.inner_value1 = 444 // OK

Debido a que las estructuras son inmutables de forma predeterminada, debe marcar un método de mutating con mutating . Y como el nombre aaa1 es constante, no se puede llamar ningún método mutador en él. Esto es exactamente lo que esperábamos en los punteros C / C ++.

Creo que este es un mecanismo para soportar un tipo de cosas de corrección constante .


Declare constantes con la palabra clave let y variables con la palabra clave var.

let maximumNumberOfLoginAttempts = 10 var currentLoginAttempt = 0 let maximumNumberOfLoginAttempts = 10 var currentLoginAttempt = 0

Declare constantes múltiples o variables múltiples en una sola línea, separadas por comas:

var x = 0.0, y = 0.0, z = 0.0

Constantes de impresión y variables

Puede imprimir el valor actual de una constante o variable con la función println:

println(friendlyWelcome)

Swift utiliza la interpolación de cadenas para incluir el nombre de una constante o variable como un marcador de posición en una cadena más larga

Envuelva el nombre entre paréntesis y escúchelo con una barra invertida antes del paréntesis de apertura:

println("The current value of friendlyWelcome is /(friendlyWelcome)")

Referencia: http://iosswift.com.au/?p=17


En veloz tenemos dos tipos de variables.

  1. var
  2. dejar

ambos de estos trabajos son iguales, contienen objetos (valor de copia, valor de referencia, etc.).

En var variable puedo cambiar el objeto que contiene a otro mientras se ejecuta el programa

var x = 12 x = 13 // it is Ok

En la variable let no puedo cambiar el objeto que contiene a otro mientras que el programa se ejecuta, tengo que inicializarlo primero. Es como constante o final en otros lenguajes como Java, C ++.

let x = 12 x = 13 // it is not OK , it will generate error


Encontré una buena respuesta espero que pueda ayudar :)


La palabra clave let define una constante:

let theAnswer = 42

El theAnswer no se puede cambiar después. Es por esto que cualquier cosa weak no puede ser escrita usando let . Deben cambiar durante el tiempo de ejecución y debes usar var lugar.

La var define una variable ordinaria.

Qué es interesante:

El valor de una constante no necesita ser conocido en el momento de la compilación , pero debe asignar el valor exactamente una vez.

Otra característica extraña:

Puede usar casi cualquier carácter que desee para los nombres de variables y constantes, incluidos los caracteres Unicode:

let 🐶🐮 = "dogcow"

Extractos de: Apple Inc. "El lenguaje de programación Swift". IBooks. https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=881256329

EDITAR

Debido a que los comentarios solicitan agregar otros hechos a la respuesta, esto se convierte en una respuesta de la comunidad wiki . Siéntete libre de editar la respuesta para mejorarla.


La palabra clave var se utiliza para definir una variable cuyo valor puede cambiar fácilmente de la siguiente manera:

var no1 = 1 // declaring the variable no1 = 2 // changing the value since it is defined as a variable not a constant

Sin embargo, la palabra clave let es solo para crear una constante utilizada cuando no desea cambiar el valor de la constante nuevamente. Si intentara cambiar el valor de la constante, obtendrá un error:

let no2 = 5 // declaring no2 as a constant no2 = 8 // this will give an error as you cannot change the value of a constant


La principal diferencia es que el valor de la variable var puede cambiar, y let que no pueda. Si desea tener una entrada de datos de usuario, usaría var para que el valor pueda cambiarse y use la variable let data type para que el valor no pueda cambiarse

var str = "dog" // str value is "dog" str = "cat" // str value is now "cat" let strAnimal = "dog" // strAnimal value is "dog" strAnimal = "cat" // Error !


Let es una variable inmutable, lo que significa que no se puede cambiar, otros idiomas llaman a esto una constante. En C ++ se puede definir como const.

Var es una variable mutable, lo que significa que se puede cambiar. En C ++ (actualización de la versión 2011), es lo mismo que usar auto, aunque swift permite una mayor flexibilidad en el uso. Este es el tipo de variable más conocido para los principiantes.


Según el libro de lenguaje de programación Swift

Al igual que C, Swift usa variables para almacenar y referirse a valores por un nombre de identificación. Swift también hace un uso extensivo de variables cuyos valores no se pueden cambiar. Estas se conocen como constantes y son mucho más poderosas que las constantes en C.

Tanto var como let son referencias , por lo tanto let es una referencia constante . El uso de tipos fundamentales no muestra en realidad cómo es diferente de const . La diferencia viene cuando se usa con instancias de clase (tipos de referencia):

class CTest { var str : String = "" } let letTest = CTest() letTest.str = "test" // OK letTest.str = "another test" // Still OK //letTest = CTest() // Error var varTest1 = CTest() var varTest2 = CTest() var varTest3 = CTest() varTest1.str = "var 1" varTest2.str = "var 2" varTest3 = varTest1 varTest1.str = "var 3" varTest3.str // "var 3"


Tal vez sea mejor establecer esta diferencia mediante la noción de mutabilidad / inmutabilidad que es el paradigma correcto de valores e intercambiabilidad de instancias en el espacio de Objetos que es más grande que las únicas nociones habituales de "constante / variable". Y además, esto está más cerca del enfoque del Objetivo C.

2 tipos de datos: tipo de valor y tipo de referencia.

En el contexto de los tipos de valor:

''let'' define un valor constante (untamable). ''var'' define un valor cambiable (mutable).

let aInt = 1 //< aInt is not changeable var aInt = 1 //< aInt can be changed

En el contexto de los tipos de referencia:

La etiqueta de un dato no es el valor sino la referencia a un valor.

si aPerson = Person (nombre: Foo, primero: Bar)

aPerson no contiene los datos de esta persona, sino la referencia a los datos de esta persona.

let aPerson = Person(name:Foo, first:Bar) //< data of aPerson are changeable, not the reference var aPerson = Person(name:Foo, first:Bar) //< both reference and data are changeable. eg: var aPersonA = Person(name:A, first: a) var aPersonB = Person(name:B, first: b) aPersonA = aPersonB aPersonA now refers to Person(name:B, first: b)


Todo el mundo ha respondido bastante a esto, pero aquí hay una manera de recordar qué es lo que

Deje que siempre diga lo mismo que "dejar", ya que esto funciona por una vez y siempre que las variables "var" siempre pueden cambiar, por lo tanto, se llaman variables "


Un valor puede ser reasignado en caso de var

//Variables var age = 42 println(age) //Will print 42 age = 90 println(age) //Will Print 90

** la constante newAge no se puede reasignar a un nuevo valor. Tratar de hacerlo dará un error de tiempo de compilación **

//Constants let newAge = 92 //Declaring a constant using let println(newAge) //Will print 92.


Una diferencia más, que he encontrado en otros idiomas para Constantes es: no se puede inicializar la constante (dejar) para más adelante , debe iniciarse cuando esté a punto de declarar la constante.

Por ejemplo :

let constantValue : Int // Compile error - let declarations require an initialiser expression

Variable

var variableValue : Int // No issues


dejar que la palabra clave define una constante

let myNum = 7

entonces myNum no puede ser cambiado después;

Pero var define una variable ordinaria.

El valor de una constante no necesita ser conocido en el momento de la compilación, pero debe asignarle un valor exactamente una vez.

Puede usar casi cualquier carácter que desee para los nombres de variables y constantes, incluidos los caracteres Unicode;

p.ej

var x = 7 // here x is instantiated with 7 x = 99 // now x is 99 it means it has been changed.

Pero si nos tomamos entonces ...

let x = 7 // here also x is instantiated with 7 x = 99 // this will a compile time error


let se usa para constantes que no pueden modificarse mientras que var es una variable ordinaria

Ejemplo:

let name = "Bob" Algo como name = "Jim" producirá un error ya que no se puede modificar una constante.


los

La sección Declaración de constantes y variables de la documentación del lenguaje de programación Swift especifica lo siguiente:

Usted declara constantes con la palabra clave let y variables con la palabra clave var.

Asegúrese de entender cómo funciona esto para los tipos de referencia. A diferencia de los tipos de valor, las propiedades subyacentes del objeto pueden cambiar a pesar de que una instancia de un tipo de referencia se declare como una constante. Vea la sección Clases son tipos de referencia de la documentación y observe el ejemplo en el que cambian la propiedad frameRate.


let definir una "constante". Su valor se establece una vez y solo una vez, aunque no necesariamente cuando se declara. Por ejemplo, utiliza let para definir una propiedad en una clase que debe establecerse durante la inicialización:

class Person { let firstName: String let lastName: String init(first: String, last: String) { firstName = first lastName = last super.init() } }

Con esta configuración, no es válido asignar el primer nombre o el lastName nombre después de llamar (por ejemplo) Person(first:"Malcolm", last:"Reynolds") para crear una instancia de Person .

Debe definir un tipo para todas las variables ( let o var ) en tiempo de compilación, y cualquier código que intente establecer una variable solo puede usar ese tipo (o un subtipo). Puede asignar un valor en tiempo de ejecución, pero su tipo debe ser conocido en tiempo de compilación.


let se usa para definir constantes y var para definir variables.


let se utiliza para declarar un valor constante, lo que significa que no lo cambiará después de darle un valor inicial.
var se utiliza para decalre un valor variable, lo que significa que puede cambiar su valor como desee.


var es la única manera de crear una variable en swift. var no significa variable dinámica como en el caso de lenguajes interpretados como javascript. Por ejemplo,

var name = "Bob"

En este caso, el tipo de name de la variable se infiere que el nombre es de tipo String , también podemos crear variables definiendo explícitamente el tipo, por ejemplo

var age:Int = 20

Ahora, si asigna una cadena a la edad, entonces el compilador da el error.

let se usa para declarar constantes. Por ejemplo

let city = "Kathmandu"

O también podemos hacer,

let city:String = "Kathmandu"

Si intenta cambiar el valor de la ciudad, se produce un error en el momento de la compilación.


let se usa para definir constantes y var para definir variables. Usted define la cadena usando var y luego la cadena en particular puede modificarse (o mutarse) asignándola a una variable (en cuyo caso puede modificarse), y si define la cadena usando let es una constante (en cuyo caso no puede ser modificado):

var variableString = "Apple" variableString += " and Banana" // variableString is now "Apple and Banana" let constantString = "Apple" constantString += " and another Banana" // this reports a compile-time error - a constant string cannot be modified


El valor de var puede ser cambiado, después de inicializar. Pero dejar que el valor no sea cambio, cuando se intiliza una vez.

En caso de var

function variable() { var number = 5, number = 6; console.log(number); // return console value is 6 } variable();

En caso de dejar

function abc() { let number = 5, number = 6; console.log(number); // TypeError: redeclaration of let number } abc();


Let es un valor constante, por lo que nunca se puede cambiar.

let number = 5 number = 6 //This will not compile.

Var es una variable y puede cambiar (pero después de que se define no para un tipo de datos diferente).

var number = 5 number = 6 //This will compile.

Si intenta cambiar la variable a un tipo de datos diferente, no funcionará

var number = 5 number = "Hello World" //This will not compile.


Muy simple:

  • let sea ​​constante.
  • var es dinámico.

Poco de descripción:

let crea una constante. ( NSString como una NSString ). No puedes cambiar su valor una vez que lo hayas establecido. Aun así, puedes agregarlo a otras cosas y crear nuevas variables.

var crea una variable (algo así como NSMutableString ) para que pueda cambiar el valor de la misma. Pero esto ha sido contestado varias veces.