Sobes.tech
Junior

Kuidas rakendada harutamist, kasutades switch operaatorit Dart keeles?

sobes.tech AI

Vastus AI-lt

Hargnemise switch operaatoriga Dartis toimub järgmiselt:

void main() {
  var color = 'red';

  switch (color) {
    case 'red':
      print('Selected color is red.');
      break; // Lõpetab `switch` ploki täitmise
    case 'blue':
      print('Selected color is blue.');
      break;
    case 'green':
      print('Selected color is green.');
      break;
    default: // Täidetakse, kui ükski juhtum ei sobi
      print('Unknown color.');
  }
}

switch võrdleb muutuja väärtust (antud juhul color) case-i järel olevate konstanditega. Kui leitakse vaste, täidetakse selle case-i seotud kood. break on vajalik switch ploki väljumiseks pärast sobiva juhtumi täitmist. Kui seda jätta vahele, jätkub täitmine järgmise case-i juurde (nimetatakse "fallthrough"), mis tavaliselt ei ole soovitav. default kasutatakse juhtudel, kui ükski case ei sobi.

Oluline on teada, et Dartis saab switch-i kasutada ainult järgmiste tüüpide väljenditega:

  • int
  • String tüüpi väärtustega (String)
  • Kompileerimise ajal määratletud konstandatega (const) või lõplikke (final) primitiivsete tüüpide muutujatega
  • enum tüüpi muutujatega

Samuti saab kasutada tüüpide vastavust case (Type value):

void process(dynamic value) {
  switch (value) {
    case String s:
      print('Value is a string: $s');
      break;
    case int i when i > 0: // Kasutades `when` tingimust
      print('Value is a positive integer: $i');
      break;
    case List _: // Vastavus List tüübile ilma muutujaga sidumiseta
      print('Value is a list');
      break;
    default:
      print('Value is of another type');
  }
}

void main() {
  process('hello');
  process(10);
  process([1, 2, 3]);
  process(3.14);
}

Dart 3.0 tutvustas uusi pattern matching võimalusi, mis laiendavad switch väljendeid:

var number = 1;
var text = switch (number) {
  1 => 'one',
  2 => 'two',
  _ => 'other' // Asendab default-i
};
print(text); // Kuvab: one

Siin kasutatakse switch-i kui väljendit, mis tagastab väärtuse. _ sümbol toimib asendusena, mis vastab igale väärtusele.