3

我想让我的 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 类型别名,包括伴随对象 [beginner]

关于那个问题,有两个回复,他们都没有工作。

一种是使用 apply 定义我的自定义对象,但我不确定在我的情况下如何做到这一点,而且它有点冗长。

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

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

4

1 回答 1

5

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

所以,另一种方法——写作val IntSeq = Seq——实际上会奏效。

于 2012-07-08T01:36:43.540 回答