iterableToShortString 静态方法
将一个 Iterable
转换为一个类似 Iterable.toString 的字符串。
允许使用除了 '(' 和 ')' 之外的其它分隔符。
处理循环引用,其中将其中一个元素转换为字符串可能会导致再次将 iterable
转换为字符串。
实现
static String iterableToShortString(Iterable iterable,
[String leftDelimiter = '(', String rightDelimiter = ')']) {
if (isToStringVisiting(iterable)) {
if (leftDelimiter == "(" && rightDelimiter == ")") {
// Avoid creating a new string in the "common" case.
return "(...)";
}
return "$leftDelimiter...$rightDelimiter";
}
List<String> parts = <String>[];
toStringVisiting.add(iterable);
try {
_iterablePartsToStrings(iterable, parts);
} finally {
assert(identical(toStringVisiting.last, iterable));
toStringVisiting.removeLast();
}
return (StringBuffer(leftDelimiter)
..writeAll(parts, ", ")
..write(rightDelimiter))
.toString();
}