Map m
) Returns a string representing the specified map. The returned string
looks like this: '{key0: value0, key1: value1, ... keyN: valueN}'
.
The value returned by its toString method is used to represent each
key or value.
If the map collection contains a reference to itself, either
directly as a key or value, or indirectly through other collections
or maps, the contained reference is rendered as '{...}'
. This
prevents the infinite regress that would otherwise occur. So, for example,
calling this method on a map whose sole entry maps the string key 'me'
to a reference to the map would return '{me: {...}}'
.
A typical implementation of a map's toString method will simply return the results of this method applied to the collection.
Source
/**
* Returns a string representing the specified map. The returned string
* looks like this: [:'{key0: value0, key1: value1, ... keyN: valueN}':].
* The value returned by its [toString] method is used to represent each
* key or value.
*
* If the map collection contains a reference to itself, either
* directly as a key or value, or indirectly through other collections
* or maps, the contained reference is rendered as [:'{...}':]. This
* prevents the infinite regress that would otherwise occur. So, for example,
* calling this method on a map whose sole entry maps the string key 'me'
* to a reference to the map would return [:'{me: {...}}':].
*
* A typical implementation of a map's [toString] method will
* simply return the results of this method applied to the collection.
*/
static String mapToString(Map m) {
// Reuse the list in IterableBase for detecting toString cycles.
if (IterableBase._isToStringVisiting(m)) { return '{...}'; }
var result = new StringBuffer();
try {
IterableBase._toStringVisiting.add(m);
result.write('{');
bool first = true;
m.forEach((k, v) {
if(!first) {
result.write(', ');
}
first = false;
result.write(k);
result.write(': ');
result.write(v);
});
result.write('}');
} finally {
assert(identical(IterableBase._toStringVisiting.last, m));
IterableBase._toStringVisiting.removeLast();
}
return result.toString();
}