Tabla de Contenido
- Tabla de Contenido
- Introducción
- Numbers
- Strings
- Booleans
- Records
- Lists — Sets — Maps
- Runes
- Symbols
- Otros tipos
- Conclusión
- Fuentes
Introducción
Los tipos de datos en Dart o cualquier otro lenguaje, vienen siendo el tipo de valor que queremos almacenar, como por ejemplo: cadenas, números, listas, entre otros. Son importantes para poder diferenciar bien el tipo de valor que asignamos en cada variable.
En Dart tenemos como principales los siguientes tipos incorporados:
- Numbers
- Strings
- Booleans
- Records
- Lists (también conocidos como arrays)
- Sets
- Maps
- Runes
- Symbols
Numbers
Los numéricos en Dart son parte de Object en la jerarquía de tipos, se divide en 2, los int y double, a su vez estos son subtipos de num.
int
Son valores enteros de máximo 64 bits. Cambia un poco si es para nativo o para Web.
Para Nativo es entre (-2⁶³ — 2⁶³ -1) que equivale a -9223372036854775808 y 9223372036854775807 .
Para Web es entre (-2⁵³ — 2⁵³ -1) que equivale a -9007199254740992 y -9007199254740991 .
También se puede usar hexadecimal.
int min = -9223372036854775808; // el número mínimo en int
int max = 9223372036854775807; // el número máximo en int
var numInt = 10;
var numHex = 0xDEADBEEF; // número hexadecimal
En caso de que sea más grande nos mostrará un error en tiempo de compilación.
double
Los double que son números flotantes (permiten decimales) de 64 bits.
double numDouble = 10.53;
double numExp = 10.45e5;
También es posible declarar variables con num, lo único a tener en cuenta es que puede ser tanto int como double.
num numberDynamic = 10;
num numDynamic = 10.45;
Conversiones a cadenas
// De int a String
int intValue = 14;
String intStr = intValue.toString();
// De String a int
String strIntValue = '14';
int strInt = int.parse(strIntValue);
// De double a String
double doubleValue = 10.234;
String doubleStr = doubleValue.toStringAsFixed(2);
// De String a double
String strDoubleValue = '12.323';
double strDouble = double.parse(strDoubleValue);
Strings
Las cadenas almacenas son alfanuméricas y se pueden crear con comillas simples o comillas dobles, lo recomendado es usar comillas simples, pero cabe aclarar que se puede usar cualquiera de las dos.
String str = 'texto en Dart';
var cad = "aquí hay algo de texto!";
Interpolación de Strings
La interpolación de String permite agregar valores dentro de una cadena utilizando $ si es solo un valor o ${<código>} si ya es alguna sentencia.
String strValue = 'One Piece';
String strExp = '$strValue es el mejor anime!';
String strExp2 = '${strValue.toUpperCase()} recomendado!';
Cadenas multilínea
Este tipo de cadenas es muy útil cuando se quiere escribir varias líneas seguidas, para lograrlo basta con agregar tres comillas al inicio y al final.
String strMulti = '''
Aquí podemos tener
múltiples líneas sin necesidad
de usar el salto de línea
''';
Booleans
Los booleanos en Dart son representados por la palabra reservada bool, este tipo de dato solo tiene dos posibles valores true o false. El valor por defecto es false.
bool isValid = true;
var name = '';
assert(name.isEmpty);
Records
Los Records en Dart son similares a la desestructuración en JavaScript, donde tenemos por ejemplo una función que nos devuelve un objeto, pero resulta que de ese objeto solo nos interesan ciertos campos, ahí es muy útil usar los Records.
void main() {
final Car car = Car('Porsche', 'JAT-119', 'black');
print(carInfo(car));
}
(String, String) carInfo(final Car car) {
return (car.brand, car.color);
}
class Car {
final String brand;
final String badge;
final String color;
Car(this.brand, this.badge, this.color){}
}
Lists — Sets — Maps
Son tipos de colecciones que tiene Dart.
var list = [1, 2, 3. 4, 5];
var numbers = {'uno', 'dos', 'tres', 'cuatro', 'cinco'};
var numberMap = {
// llave: valor
'one': '1',
'two': '2',
'three': '3'
};
Runes
En Dart los Runes hacen que se exponga los códigos unicode. Unicode define un valor numérico único para cada letra, dígito y símbolo utilizado en todos los sistemas de escritura del mundo.
String str = '\u2665 \u2665 \u2665';
String str2 = '\u{1f606}';
String str3 = '\u{1f607}';
Symbols
En Dart un Symbol representa un operador o identificador declarado. No son muy usados pero pueden ser útiles para las APIs que se refieren a sus identificadores por su nombre. Para más detalle ver aquí.
#radix
#bar
Otros tipos
- dynamic: Los tipos de datos dinámicos hace que pueda tomar cualquier tipo y así mismo cambiar.
- Object: Es la superclase de todas las clases en Dart excepto Null.
- Enum: La superclase de todos los enum.
- Future y Stream: Usados para todo el tema de asíncronos en Dart.
- Iterable: Utilizado en bucles for-in y en funciones generadoras síncronas.
- Never: Indica que una expresión nunca puede terminar de evaluarse correctamente. Se suele utilizar en funciones que siempre lanzan una excepción.
- void: Usado en las funciones cuando no se quiere retornar un valor.
Conclusión
Vimos de manera general los diferentes tipos de datos que maneja Dart con algunos ejemplos, podemos notar que es bastante robusto en este aspecto solo es cuestión de saber aplicarlos en los casos correctos.
¡Gracias por leer!
