toString method

  1. @override
String toString()
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString() {
  if (_isQuote) return _specialToString("'");
  if (_isQuasiquote) return _specialToString("`");
  if (_isUnquote) return _specialToString(",");
  if (_isUnquoteSplicing) return _specialToString(",@");

  final buffer = StringBuffer();
  buffer.write('(');
  var current = this;
  for (;;) {
    buffer.write(current.car);
    if (current.cdr is Cons) {
      current = current.cdr;
      buffer.write(' ');
    } else if (current.cdr == null) {
      buffer.write(')');
      return buffer.toString();
    } else {
      buffer.write(' . ');
      buffer.write(current.cdr);
      buffer.write(')');
      return buffer.toString();
    }
  }
}