我想让我的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的伴侣。 同伴必须一起定义;您可能希望使用:粘贴模式。
答案 0 :(得分:5)
第二个错误只是因为REPL的运行方式。在REPL中,必须使用:paste
模式一起定义随播广告;但是,在包对象中,这不是问题。
所以,另一种方法 - 编写val IntSeq = Seq
- 实际上会有效。