stdout.write în Dart

stdout.write scrie text fără rând nou la final; stdout.writeln adaugă rândul nou, ca print.

Sintaxă
void write(Object? object)
void writeln([Object? object = ""])

Ce face stdout.write

stdout.write(x) transformă valoarea în text (cu toString()) și o scrie fără să treacă pe rândul următor. Următoarea scriere continuă pe același rând. Este potrivit pentru întrebări urmate de răspuns, bare de progres sau pentru a construi un rând din mai multe bucăți.

stdout.writeln(x) scrie valoarea și apoi un rând nou; fără argument scrie doar rândul nou. Rezultatul este același ca la print(x).

Ambele sunt metode moștenite de la IOSink, deci funcționează la fel pentru stderr și pentru fișierele deschise cu openWrite.

Parametri

Parametru Descriere
object Valoarea de scris; orice obiect, convertit cu toString().

Exemple

Exemplul 1: Un rând construit din bucăți

import 'dart:io';

void main() {
  final orase = ['Iași', 'Cluj', 'Timișoara'];
  stdout.write('Orașe: ');
  for (var i = 0; i < orase.length; i++) {
    stdout.write(orase[i]);
    if (i < orase.length - 1) stdout.write(' -> ');
  }
  stdout.writeln();
  stdout.writeln('Total: ${orase.length}');
}

Rezultat

Orașe: Iași -> Cluj -> Timișoara
Total: 3

Exemplul 2: Întrebare pe același rând cu răspunsul

În terminal, utilizatorul scrie după Suma în lei: . Pe site, textul vine ca intrare, deci rezultatul continuă direct pe același rând.

import 'dart:io';

void main() {
  stdout.write('Suma în lei: ');
  final lei = double.parse(stdin.readLineSync() ?? '0');
  stdout.writeln('= ${(lei / 4.97).toStringAsFixed(2)} euro');
}

Ce scrie utilizatorul (intrare)

250

Rezultat

Suma în lei: = 50.30 euro

Exemplul 3: Bară de progres

import 'dart:io';

void main() {
  const total = 10;
  for (var pas = 1; pas <= total; pas++) {
    stdout.write('#');
  }
  stdout.writeln(' 100%');
  stdout.writeln('Descărcare terminată.');
}

Rezultat

########## 100%
Descărcare terminată.

Greșeli frecvente

  • Folosești print pentru o întrebare: cursorul trece pe rândul următor și răspunsul apare sub întrebare, nu lângă ea.
  • Uiți writeln() după ultimul write: promptul terminalului apare lipit de textul tău.

Comenzi înrudite

  • stdout: stdout este ieșirea standard a programului: tot ce apare în terminal; are metodele unui IOSink (write, writeln, writeAll).
  • stdin.readLineSync: Citește un rând de la tastatură (intrarea standard) și îl returnează fără Enter; returnează null la sfârșitul intrării.
  • IOSink: Destinația în care scrii text sau octeți: un fișier deschis (openWrite), stdout, stderr sau răspunsul HTTP.
  • stderr: stderr este ieșirea de erori a programului, separată de stdout; aici scrii avertismentele și mesajele de eroare.