【发布时间】:2013-03-09 04:38:25
【问题描述】:
我想创建一组名为IntSet 的整数。 IntSet 在各方面都与Set[Int] 相同,只是它的toString 函数将元素打印为逗号分隔(与您调用mkString(",") 相同),并且它有一个构造函数,它采用Traversable整数。最简单的方法是什么?
> IntSet((1 to 3)).toString
1,2,3
我认为会有一些单行方式来做到这一点,但我一直在摆弄隐式函数并扩展 HashSet,但我无法弄清楚。
诀窍是使用代理对象。 Eastsun 的答案如下。这是一个稍微不同的版本,它定义了一个名为 IntSet 的类型并使其不可变。
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(",")
}
【问题讨论】:
标签: scala tostring scala-collections