将伴随对象应用于别名类型

时间:2012-07-08 01:19:17

标签: scala companion-object

我想让我的Scala代码更具可读性,因此我为所有参数化类型添加了自定义类型。

所以我在包对象中,为简单起见,

type IntSeq = Seq[Int]

但是,现在我不能对伴侣对象做简单的apply。来自REPL:

scala> IntSeq(1, 2, 3)
<console>:8: error: not found: value IntSeq
              IntSeq(1, 2, 3)
              ^

怎么办?

(只是为了确保:我的实际别名对象比Seq[Int]更复杂)

编辑:有一个类似的问题 - Scala type alias including companion object [beginner]

在这个问题上,有两个回复,两个都不起作用。

一个是使用apply定义我的自定义对象,但我不知道如何在我的情况下这样做,再加上它有点冗长。

另一个 - 写val IntSeq = Seq会产生错误

  

警告:先前定义的特征Seq不是值IntSeq的伴侣。   同伴必须一起定义;您可能希望使用:粘贴模式。

1 个答案:

答案 0 :(得分:5)

第二个错误只是因为REPL的运行方式。在REPL中,必须使用:paste模式一起定义随播广告;但是,在包对象中,这不是问题。

所以,另一种方法 - 编写val IntSeq = Seq - 实际上会有效。