Curso de Dart

Curso de Dart

Argel Franco Bejarano de la Cruz

Argel Franco Bejarano de la Cruz

Operadores aritméticos, de asignacion y lógicos

8/29

Lectura

Operadores

Los operadores utilizados en Dart son los siguientes:

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 39

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Uno de los operadores que creo que solo esta en Dart es la cascada

void main() {
  //Forma tradicional para llamar al metodo add
	var lista = [1];
  lista.add(2);
  lista.add(3);
  lista.add(4);
  lista.add(5);
	
  print("Tradicional add");
  lista.forEach(print);
  
  //Notacion en cascada para llamar al metodo add
  lista = [];
  lista
    ..add(5)
    ..add(4)
    ..add(3)
    ..add(2)
    ..add(1);
  
  print("Notacion en cascada");
  lista.forEach(print);
}

Saludos y no dejen de aprender! 😄

deberían hacer un video explicando todo esto, hay cosas que en mi vida había visto.
es como si estuvieran apurados y no quieren explicar esto, y solo nos ponen una simple información…
uno tiene que revisar los comentarios, ya que ahí nomas hay algunos compañeros que explican…
es en serio platzi??? ???

Esto parece estar escrito con los pies, simplemente… Los videos se entienden, pero de este artículo entendí la mitad. Y ni hablar de ese último párrafo.

Alguien entendió esta parte? Si fuera tan amable de explicarme. 😄

Dart también soporta operadores de incrementos y decrementos de prefijos y postfijos.

var El cual se leería; var = var + 1 (expression value is var + 1)
var El cual se leería; var = var + 1 (expression value is var)
–var El cual se leería; var = var – 1 (expression value is var – 1)
var-- El cual se leería; var = var – 1 (expression value is var)

Esta clase podria ser mejor

Probando algunos de los operadores

main(List<String> arguments) {
  int i=10;
  bool t=true;
  print(i++ );//suma despues
  print('$i resultado despues de sumar');
  print(i--);//resta despues 
  print('$i resultado despues de restar');  
  print(++i);//suma previa imprime 11 porque se rest
  print('$i resultado es igual al previo debido a que se suma previamente');
  print(--i);//resta previa
    print('$i resultado es igual al previo debido a que se resta previamente');
  print(-i);//cambio a negativo
  print(!t);//negacio
  print(~i);
  String casos='P';
  String result= casos=='J'?'Es Juan':'No Se Sabe';
    print(result);
   casos='J';
   result= casos=='J'?'Es Juan':casos=='P'?'Es Pedro' : 'No Se Sabe';
  print(result);

  int a=0;  
  a=1;
  print(a);
  a??=5;
  print(a);  //??= este operador esta interesante porque sirve si existe no cambies y si no existe cambia
  int b;
  b??=9;
  print(b);//??= este operador esta interesante porque sirve si existe no cambies y si no existe cambia
  
}
result: 

10
11 resultado despues de sumar
11
10 resultado despues de restar
11
11 resultado es igual al previo debido a que se suma previamente
10
10 resultado es igual al previo debido a que se resta previamente
-10
false
4294967285
No Se Sabe
Es Juan
1
1
9

Hay un tour de Dart en el que hay demasiada información útil, por acá dejaré el link:
Language tour | Dart

No conocía el ??=,creo que casi ningún lenguaje lo tiene…

Las cascadas (…) le permiten realizar una secuencia de operaciones en el mismo objeto. Además de las llamadas a funciones, también puede acceder a los campos en ese mismo objeto. Esto a menudo le ahorra el paso de crear una variable temporal y le permite escribir un código más fluido.

Considere el siguiente código:

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

La primera llamada al método, querySelector (), devuelve un objeto selector. El código que sigue a la notación en cascada opera en este objeto selector, ignorando cualquier valor posterior que pueda ser devuelto.

El ejemplo anterior es equivalente a:

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

Fuente
https://dart.dev/guides/language/language-tour#cascade-notation-

En la siguiente pagina: https://www.gcoding.academy/ podrán encontrar un libro introductorio sobre Dart, lo he venido siguiendo a la par del curso y complementa muy bien los temas. Este es creado por quienes construyen la comunidad de Flutter en español.

En mi caso el uso de operadores me ayuda en ocasiones a reducir lineas de código y hacerlo mas legible, por ejemplo el operador ternario reduce 3 o mas lineas en ocasiones al utilizarlas en hacer una condicional ‘if’

<code>
void main(List<String> arguments) {
  var a = 3;
  var b= 4;
  var mensaje='';
  //¿La variable a es mayor a la b? Si : No
  mensaje = a>b?'La variable a es mayor a b':'La variable b es mayor a';

  print(mensaje);
}
</code>

me parecio muy buena este operador: a??=“valor a ponerle a la variable en caso de que no exista”.

seria un poco mejor que esto fuera con ejemplo en el codigo y luego ver con print

main(List<String> args) {
  var x = 5;
  var y = 2;

  var z = x ~/ y; //Truncates, is like a division with ints
  print(z);

  final value = 0x22;
  final bitmask = 0x0f;

  assert((value & bitmask) == 0x02); // AND
  assert((value & ~bitmask) == 0x20); // AND NOT
  assert((value | bitmask) == 0x2f); // OR
  assert((value ^ bitmask) == 0x2d); // XOR
  assert((value << 4) == 0x220); // Shift left
  assert((value >> 4) == 0x02); // Shift right

  var s1 = 5.0;
  int s2 = 5;

  print((s1 is int).toString()); //Is to check cast
  //as for iheritance
  var nu;
  nu = "no es nulo";
  nu = null;

  var isnullo = nu ?? "es nulo";
  print(isnullo);
}```

Los operadores de dezplazamientos resultas muy útiles en algoritmos complejos y en técnicas de programación y de algoritmia avanzados como lo son los árboles de Fenwik y los SegmentTree

Sencillo ejercicio hecho con todo lo aprendido…
PD: Si hay alguna cosa que puede mejorar por favor hazme saber, para mejorar 😃!!

/* ***EJERCICIO***
Ordena la coleccion (list) de menor a mayor, obtiene el promedio y la muestra de datos en la consola
*/

void main(List<String> arguments) {

  List array = [5, 7, 1, 9, 21]; 
  /* sumaElementos = sumatoria de elementos de list.
     numElementos = cantidad de elementos que posee la list. 
  */
  int aux, sumaElementos=0;
  double promedio;

  //ordenamiento burbuja 
  for (int i = 0; i < 4; i++){
    for (var j = 0; j < 4; j++){
      if (array[j] > array[j+1]){
        aux = array[j+1] ;
        array[j+1] = array[j];
        array[j] = aux ;  
      }    
    }
  }

  //utilice un ciclo para almacenar la sumatoria de los elementos de la lista     
  for (var i = 0; i < 5; i++) {
    sumaElementos += array[i];
  }

  
  final numElementos = array.length;
  promedio = sumaElementos / numElementos;

  //impresion del list con la propiedad forEach
  print('Lista ordenada: ');
  array.forEach((val){
    print(val);
  });

  // prueba de datos
  print('\nSumatoria de elementos de la list: $sumaElementos');
  print('Numero de elementos de la list: $numElementos');
  //impresion de promedio
  print('El promedio es: $promedio');
}```

Que valiosa información. Hay operadores que desconocia 😮

?? // if null operator
??= // null-aware assignment
x?.p // null-aware access
x?.m() // null-aware method invocation

test!

const Object i =" 1"; // Where i is a const Object with an dynamic value...
  const list = (i is int) ? i as int: 4; // Use a typecast.  .
  const map = {if (i is int) i: "int"}; // Use is and collection if.

 const Object e=2;
    const list2 =  [e as int]; // Use a typecast.

  const set = {if (list2 is List<int>) ...list2}; // ...and a spread.
  print(list);
  print(map);
  print(set);

Disculpen alguien que halla trabajado con flutter sabe en si que significa un constructor así:

  StoriesBlocProvider({Key key, Widget child}) 
    : bloc = StoriesBloc(),
      super(key:key, child:child);```

Buen resumen la verdad, aunque pudo haber tenido un poco mas de ejemplos

En que casos puedo utilizar el << o el >> ??

Les puede ser de mucha ayuda con ejemplos esta sección de la documentación

En que casos , bitwise es util ?

Me acorde de programación de Microcontroladores con C/C++ jajajajaj.

Muchas gracias

no sabia de …

Excelente aporte Gracias!.

excelente resumen de la documentación

es buena cheat sheet

Super!!

Definir una variable y si no existe no reemplazar el valor, es muy interesante

Muchas gracias.

Gracias.

Faltan algunos carácteres en el texto tales como en la multiplicación o en incremento.

No entendi el uso de ~ pero espero usarlo en aguna practica apara ver su funcionalidad total

creo que como muchos que hemos usado Java o C, uno de los operadores más interesantes es ??.. Muuuy práctico…

El uso de funciones anónimas
Link: anonymous-functions

var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
  print('${list.indexOf(item)}: $item');
});