Spec-Zone.ru › Dart 2

dart:async

Метод join

Future<String> join(
  1. [String separator = ""]
)

Объединяет строковое представление элементов в одну строку.

Каждый элемент преобразуется в строку с помощью метода Object.toString. Если separator указано, оно вставляется между строковыми представлениями элементов.

Возвращаемое future завершается объединённой строкой, когда этот поток завершается.

Если этот поток генерирует ошибку или вызов Object.toString вызывает исключение, возвращаемое future завершается этой ошибкой, и обработка прекращается.

Пример:

final result = await Stream.fromIterable(['Mars', 'Venus', 'Earth'])
    .join('--');
print(result); // 'Mars--Venus--Earth'

Реализация

Future<String> join([String separator = ""]) {
  _Future<String> result = new _Future<String>();
  StringBuffer buffer = new StringBuffer();
  bool first = true;
  StreamSubscription<T> subscription =
      this.listen(null, onError: result._completeError, onDone: () {
    result._complete(buffer.toString());
  }, cancelOnError: true);
  subscription.onData(separator.isEmpty
      ? (T element) {
          try {
            buffer.write(element);
          } catch (e, s) {
            _cancelAndErrorWithReplacement(subscription, result, e, s);
          }
        }
      : (T element) {
          if (!first) {
            buffer.write(separator);
          }
          first = false;
          try {
            buffer.write(element);
          } catch (e, s) {
            _cancelAndErrorWithReplacement(subscription, result, e, s);
          }
        });
  return result;
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Stream/join.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API