Programación Dart - Variables

Una variable es "un espacio con nombre en la memoria" que almacena valores. En otras palabras, actúa como contenedor de valores en un programa. Los nombres de las variables se denominan identificadores. Las siguientes son las reglas de nomenclatura para un identificador:

  • Los identificadores no pueden ser palabras clave.

  • Los identificadores pueden contener letras y números.

  • Los identificadores no pueden contener espacios y caracteres especiales, excepto el subrayado (_) y el signo de dólar ($).

  • Los nombres de las variables no pueden comenzar con un número.

Tipo de sintaxis

Una variable debe declararse antes de ser utilizada. Dart usa la palabra clave var para lograr lo mismo. La sintaxis para declarar una variable es la siguiente:

var name = 'Smith';

Todas las variables en dart almacenan una referencia al valor en lugar de contener el valor. La variable llamada nombre contiene una referencia a un objeto String con un valor de "Smith".

Soportes de dardos type-checkingprefijando el nombre de la variable con el tipo de datos. La verificación de tipo garantiza que una variable contenga solo datos específicos de un tipo de datos. La sintaxis para el mismo se da a continuación:

String name = 'Smith'; 
int num = 10;

Considere el siguiente ejemplo:

void main() { 
   String name = 1; 
}

El fragmento anterior dará como resultado una advertencia, ya que el valor asignado a la variable no coincide con el tipo de datos de la variable.

Salida

Warning: A value of type 'String' cannot be assigned to a variable of type 'int'

Todas las variables no inicializadas tienen un valor inicial de nulo. Esto se debe a que Dart considera todos los valores como objetos. El siguiente ejemplo ilustra lo mismo:

void main() { 
   int num; 
   print(num); 
}

Salida

Null

La palabra clave dinámica

Las variables declaradas sin un tipo estático se declaran implícitamente como dinámicas. Las variables también se pueden declarar usando la palabra clave dinámica en lugar de la palabra clave var.

El siguiente ejemplo ilustra lo mismo.

void main() { 
   dynamic x = "tom"; 
   print(x);  
}

Salida

tom

Final y Const

los final y constLas palabras clave se utilizan para declarar constantes. Dart evita modificar los valores de una variable declarada utilizando la palabra clave final o const. Estas palabras clave se pueden utilizar junto con el tipo de datos de la variable o en lugar delvar palabra clave.

los constLa palabra clave se utiliza para representar una constante en tiempo de compilación. Variables declaradas usando elconst las palabras clave son implícitamente finales.

Sintaxis: palabra clave final

final variable_name

O

final data_type  variable_name

Sintaxis: palabra clave const

const variable_name

O

const data_type variable_name

Ejemplo: palabra clave final

void main() { 
   final val1 = 12; 
   print(val1); 
}

Salida

12

Ejemplo: palabra clave const

void main() { 
   const pi = 3.14; 
   const area = pi*12*12; 
   print("The output is ${area}"); 
}

El ejemplo anterior declara dos constantes, pi y area, utilizando el constpalabra clave. losarea el valor de la variable es una constante en tiempo de compilación.

Salida

The output is 452.15999999999997

Note - solo constLas variables se pueden utilizar para calcular una constante de tiempo de compilación. Las constantes en tiempo de compilación son constantes cuyos valores se determinarán en el momento de la compilación

Ejemplo

Dart lanza una excepción si se intenta modificar las variables declaradas con el finalo palabra clave const. El ejemplo que se muestra a continuación ilustra lo mismo:

void main() { 
   final v1 = 12; 
   const v2 = 13; 
   v2 = 12; 
}

El código dado arriba arrojará el siguiente error como output -

Unhandled exception: 
cannot assign to final variable 'v2='.  
NoSuchMethodError: cannot assign to final variable 'v2=' 
#0  NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:178) 
#1      main (file: Test.dart:5:3) 
#2    _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) 
#3    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)