← Dart EspañolChapter 02 of 13

Variables y Tipos

## Objetivos de Aprendizaje - Declarar e inicializar variables - Comprender el sistema de tipos de Dart - Dominar la inferencia de tipos - Trabajar con final y const ## Variables ### Declaracion ```dart var name = 'Alice'; // Tipo inferido String greeting = 'Hello'; // Tipo explicito name = 'Bob'; // Reasignacion permitida // greeting = 123; // Error: tipo incompatible ``` ### Reglas de Nombres - Comenzar con letra o guion bajo - Puede contener numeros (despues del primer caracter) - Sensible a mayusculas/minusculas - No puede usar palabras reservadas ```dart var age = 25; // Valido var _count = 0; // Valido var price2 = 10.99; // Valido // var 2ndPlace = 1; // Invalido: comienza con numero // var class = 'test'; // Invalido: palabra reservada ``` ## Inferencia de Tipos ### Palabra clave var ```dart var city = 'Paris'; // Inferido como String var population = 2100000; // Inferido como int var area = 105.4; // Inferido como double var isCapital = true; // Inferido como bool // city = 123; // Error: no se puede asignar int a String ``` ### Final y Const ```dart final name = 'Alice'; // Se establece una vez, inferido como String // name = 'Bob'; // Error: final no puede ser reasignado const pi = 3.14159; // Constante en tiempo de compilacion const maxItems = 100; // Constante en tiempo de compilacion ``` ### Diferencia Entre final y const ```dart final now = DateTime.now(); // OK: evaluado en tiempo de ejecucion // const now = DateTime.now(); // Error: const debe ser en tiempo de compilacion ``` ## Tipos Integrados ### Numeros ```dart void main() { // int: numeros enteros int count = 42; int hex = 0xFF; // double: punto flotante double price = 19.99; double scientific = 1.5e10; print('Count: $count, Price: $price'); } ``` ### Cadenas ```dart void main() { String single = 'Comillas simples'; String double = "Comillas dobles"; String multiLine = ''' Esto es una cadena de varias lineas '''; print(single); print(double); } ``` ### Booleanos ```dart void main() { bool isActive = true; bool isComplete = false; // Operadores booleanos print(isActive && !isComplete); // true print(isActive || isComplete); // true print(!isActive); // false } ``` ### Listas ```dart void main() { // List - coleccion ordenada List numbers = [1, 2, 3, 4, 5]; var names = ['Alice', 'Bob', 'Charlie']; print(numbers.length); // 5 print(names[0]); // Alice print(names.contains('Bob')); // true } ``` ### Conjuntos ```dart void main() { // Set - coleccion desordenada de elementos unicos Set fruits = {'apple', 'banana', 'orange'}; var colors = {'red', 'green', 'blue'}; print(fruits.contains('banana')); // true fruits.add('grape'); print(fruits.length); // 4 } ``` ### Mapas ```dart void main() { // Map - pares clave-valor Map ages = {'Alice': 30, 'Bob': 25}; var scores = {'Math': 95, 'Science': 88}; print(ages['Alice']); // 30 print(scores.containsKey('Math')); // true ages['Charlie'] = 35; } ``` ### Runes ```dart void main() { // Runes - puntos de codigo Unicode String emoji = 'Hello 👋'; print(emoji.runes.toList()); // [72, 101, 108, ...] // Interpolacion de cadenas con unicode print('Heart: \u2665'); // Heart: ♥ print('Euro: \u20AC'); // Euro: € } ``` ## Conversion de Tipos ### Numero a Cadena ```dart void main() { int age = 30; double price = 19.99; String ageStr = age.toString(); String priceStr = price.toString(); String priceFixed = price.toStringAsFixed(2); // "19.99" } ``` ### Cadena a Numero ```dart void main() { String numStr = '42'; String decimalStr = '3.14'; int num = int.parse(numStr); // 42 double dec = double.parse(decimalStr); // 3.14 // Con manejo de errores try { int invalid = int.parse('abc'); } catch (e) { print('Invalid number format'); } } ``` ### TryParse (Mas Seguro) ```dart void main() { int? result = int.tryParse('123'); print(result); // 123 int? invalid = int.tryParse('abc'); print(invalid); // null } ``` ## Tipo Dinamico ```dart void main() { dynamic value = 'text'; print(value); // text value = 123; print(value); // 123 // Evitar usar dynamic cuando sea posible // pierde los beneficios de verificacion de tipos } ``` ## Alias de Tipo ```dart typedef IntList = List; typedef StringMap = Map; void main() { IntList numbers = [1, 2, 3]; StringMap names = {'first': 'Alice', 'second': 'Bob'}; } ``` ## Resumen - Las variables almacenan valores de datos - `var` permite a Dart inferir el tipo; tipos explicitos tambien soportados - `final` para constantes en tiempo de ejecucion (establecer una vez) - `const` para constantes en tiempo de compilacion - Tipos integrados: int, double, String, bool, List, Set, Map, Runes - Usar `tryParse` para conversion segura de cadena a numero - Preferir tipado fuerte sobre `dynamic`

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →