iterableToFullString 静态方法

String iterableToFullString(
  1. Iterable iterable,
  2. [String leftDelimiter = '(',
  3. String rightDelimiter = ')']
)

将一个 Iterable 转换为字符串。

将每个元素转换为字符串,并以 ", " 分隔结果。然后使用 leftDelimiterrightDelimiter 包装结果。

iterableToShortString 不同,此转换不会省略任何元素或对结果的大小进行限制。

处理循环引用,其中将某个元素转换为字符串会导致再次将 iterable 转换为字符串。

实现

static String iterableToFullString(Iterable iterable,
    [String leftDelimiter = '(', String rightDelimiter = ')']) {
  if (isToStringVisiting(iterable)) {
    return "$leftDelimiter...$rightDelimiter";
  }
  StringBuffer buffer = StringBuffer(leftDelimiter);
  toStringVisiting.add(iterable);
  try {
    buffer.writeAll(iterable, ", ");
  } finally {
    assert(identical(toStringVisiting.last, iterable));
    toStringVisiting.removeLast();
  }
  buffer.write(rightDelimiter);
  return buffer.toString();
}