Nadpisanie toString w zestawie Scala

Chcę utworzyć zestaw liczb całkowitych o nazwieIntSet. IntSet jest identyczny zSet[Int] pod każdym względem oprócz tegotoString Funkcja wypisuje elementy jako rozdzielane przecinkami (tak samo, jak gdybyś dzwoniłmkString(",")) i ma konstruktora, który bierzeTraversable liczb całkowitych. Jaki jest najprostszy sposób, aby to zrobić?

> IntSet((1 to 3)).toString
1,2,3

Sądzę, że będzie jakiś sposób, aby to zrobić, ale bawiłem się niejawnymi funkcjami i rozszerzaniemHashSet i nie mogę tego zrozumieć.

Sztuczka polega na użyciu obiektu proxy.Eastsun ma odpowiedź poniżej. Oto nieco inna wersja, która definiuje nazwęIntSet typ i czyni go niezmiennym.

import collection.immutable.{HashSet, SetProxy}

class IntSet(values: Traversable[Int]) extends SetProxy[Int] {
  override val self: Set[Int] = HashSet(values.toSeq:_*)
  override def toString() = mkString(",")
}

questionAnswers(1)

yourAnswerToTheQuestion