¿Cuál es la diferencia entre la declaración de variables y la inicialización?

Como no estoy familiarizado con Swift aunque sea un poco, responderé con respecto a ‘C’.

En C, básicamente hay 3 cosas:

  1. Declaración
  2. Asignación
  3. Inicialización

1. Declaración: Declaración significa crear una variable ya que cada variable utilizada en un programa debe ser declarada.
Por ejemplo, int a;
Esto viene bajo declaración variable. Podemos decir que estamos creando una nueva variable (declarando en términos de programación) para que pueda usarse en otras partes del programa.

2. Asignación: más adelante, si necesitamos poner algo de valor en esto, lo escribimos como a = 10; . La asignación se puede hacer varias veces a lo largo del programa. Entonces, aquí, al principio, ‘a’ tenía un valor de basura, pero ahora ha cambiado a 10.

3. Inicialización: la inicialización es declarar una variable y asignar un valor en el momento de la declaración llamado inicialización de una variable .

Por ejemplo, int a=10; .
Inicialización = Declaración + Asignación en un solo paso.

Espero que lo entiendas.

Swift usa inferencia de tipos. Esto significa que el compilador puede resolver el tipo de cosa desde el contexto. Esto es diferente de C, donde cada variable necesita tener el tipo declarado explícitamente.

Entonces en Swift.

dejar a = 2

es idéntico a

deje a: Int = 2 // o
dejar a: Int = Int (2)

La inferencia de tipos reduce la cantidad de trabajo para el programador. Pero no cambia los resultados. Su preocupación debe ser escribir el código que sea más claro de leer.

Si declara una variable con un tipo, inicialmente a esa variable no se le asigna un valor. No puedes usarlo.

Entonces esto fallará

var a: Int
imprimir (a)

Esto no lo hará. Porque la variable está asignada.

var a: Int = 3
imprimir (a)

Un inicializador crea una cosa. – Y eso puede ser asignado.

var bodyTemperature = Temperatura (celsius: 39)
print (bodyTemperature.farenheit ())

Entonces aquí declaramos una variable de un tipo específico. Temperatura. El tipo de temperatura corporal se infiere por el tipo de inicializador.

La diferencia fundamental entre la declaración de variables y la inicialización es que durante la declaración, se asignan nombres de variables y se hace una referencia en la tabla del sistema, pero no se asigna memoria física. Pero durante la inicialización, la memoria real del sistema se asigna a la variable y, según el lenguaje de programación, se le asigna un valor cero o basura.

En este contexto

var age: int

Declara una variable creando una referencia de la variable en la tabla del sistema. Pero no asigna ninguna memoria para la variable. por lo tanto, no puede acceder directamente a la variable sin un error de flujo excesivo del sistema, que en otras palabras es una falla de segmento.

pero cuando inicializas la variable

var age = int ()

Se crea un objeto entero asignando memoria para una variable int de doble palabra y la ubicación de la variable se asigna a la entrada de edad de la tabla del sistema. Ahora es de tipo seguro y se puede acceder sin causar una falla de segmento en el programa.

No soy un usuario de Swift, pero creo que es una pregunta independiente del idioma.

Por ejemplo, en C / C ++ cuando declaras una variable, le dices “Ubicar el espacio de este tipo de variable para mí, lo usaré más tarde”.

int myInteger;

Si imprime el valor de myInteger puede ser cualquier valor, el espacio para el int existe pero no puso un valor en él.

Ahora, en Java cuando haces algo como

Doble myDouble = Doble ();

Está declarando e inicializando myDouble, tenga en cuenta que Double () es una clase y está llamando al constructor predeterminado, por lo tanto, myDouble tendrá un valor conocido, el valor predeterminado, generalmente cero.

Por lo general, no puede / no debe usar una variable en una expresión sin inicializarla.

Una cosa interesante, para Visual Studio, en el modo de depuración, las variables unitarias tienen el valor 0xCDCDCDCD , ya que las unitarias pueden tener cualquier valor, usan este patrón para ayudar a la depuración, cuando ves eso, sabes que hiciste algo mal y perdiste alguna inicialización.

Supongo que estás haciendo esto dentro de una clase.

  1. Declaración:

prueba de clase{
var age: Int
}

Esto es exactamente lo que se llama declaración de una variable y proporciona una anotación de tipo para esa variable. Según el libro de programación Swift de Apple, esta línea

var age: Int

se lee como “Declarar una variable llamada ‘edad’ que es del tipo ‘Int'”. Significa que puede almacenar un valor Int y solo Int en la variable ‘edad’. Esto se llama “Anotación de tipo” en Swift y no inicializa el valor de la variable. Actualmente en el bloque de clase anterior, obtendrá un error porque aún no ha proporcionado un mecanismo para establecer la variable en algún valor y Swift es muy serio al respecto. No hay ningún valor asociado con esta variable y se le asignará una variable cuando realice la inicialización. Puede hacerlo escribiendo un método init (en el que inicializa vars y lets) o inicializando cuando los declara así.

prueba de clase{
var age: Int

init (ageValue: Int) {
age = ageValue
}
}
o así,
prueba de clase{
var age: Int = Int ()
}

2. Inicialización

prueba de clase{
var age = Int ()
}

Cuando hace esto, la varianza se establece en el tipo Int y se inicializa en el valor 0. Por lo general, esto es lo mejor que puede hacer. También puede hacer este tipo de inicialización que se usa en lugar del método init cuando tiene que calcular algo e inicializar

círculo de clase {
área var: doble {
obtener{
dejar pi = 3.14
dejar radio = Doble (4)
retorno (pi * radio * radio)
}
}
}

La mejor práctica es hacer esto: Int () para evitar contratiempos simples, sin embargo, Swift es inteligente para informarle si ha dejado alguna variable sin inicializar.

Cuando declara las variables, se crea una dirección / ubicación de la variable en la memoria y no se almacena nada en ella.

int x;

Pero, si asignó algún valor a la variable cuando se declara, inicialmente almacena el valor en ella. El proceso se conoce como inicialización.

int x = 100;

En el primero, declaras que la edad es del tipo Int . Pero en este último, ambos declaran que la edad es del tipo Int y asignan un valor de cero a la edad , porque Int () es funcionalmente equivalente a Int (0) .

Una de las grandes diferencias viene cuando tratas de usar la edad . Por ejemplo, si sigue el último con print (age) , obtendrá el resultado de “0”, pero con el primero, obtendrá un error porque está intentando utilizar una variable no inicializada.

A veces tiene sentido asignar un valor de inmediato, por ejemplo, como predeterminado para cuando no se cumple ninguna de las condiciones posteriores que podrían asignar un valor. Otras veces eso puede ser un desperdicio ya que puede no haber un valor predeterminado y el valor definitivamente se establecerá en algo que no será tan predecible más adelante.

Generalmente.

La declaración de variable asigna el espacio de memoria para almacenar el valor.

La inicialización variable almacena el primer valor en ese espacio asignado.

Si no se inicializa, será un valor basura o un valor impredecible.

More Interesting

¿Cuáles podrían ser los temas de investigación en el área de modelos gráficos probabilísticos?

¿Cuál es la diferencia entre la complejidad del tiempo promedio y la complejidad del tiempo esperado?

¿Existe algún documento / tesis / investigación que demuestre que RegEx no debe usarse para el análisis HTML y que en su lugar debe usarse un analizador XML?

¿La Facultad de Ingeniería Poonjar está produciendo ingenieros informáticos de clase mundial?

¿El aprendizaje profundo realmente funciona? ¿Es solo promocionado por los investigadores que es impulsado por los fabricantes de GPU?

¿Qué artículos se consideran los clásicos de lectura obligatoria en informática?

¿Cuál es la necesidad de formas estándar y canónicas en un sistema informático?

¿Qué es el modelo computacional y su relación con la arquitectura informática?

¿Qué se necesita para ser admitido en una de las mejores escuelas de EE. UU. (MIT, CMU, Berkeley o Stanford) para obtener una maestría de CS? CGPA de alrededor de 3, con considerable experiencia en investigación (4 publicaciones internacionales + una pasantía de investigación en IIT KGP). Pasante como ingeniero de software.

¿Debería preocuparme si podría terminar mi doctorado a tiempo?

¿Qué tipo de servicio de limpieza necesitas?

¿Cómo puede la investigación de CS, como la investigación de visión por computadora, contribuir a las áreas de astronomía?

¿Qué tan difícil es cambiar el área de investigación dentro de Informática después de obtener un doctorado?

¿Cuál es la mejor manera de mostrar resultados para un trabajo de informática?

Cómo saber cuáles son las últimas áreas de investigación en informática