【问题标题】:Apply on companion object to aliased type将伴随对象应用于别名类型
【发布时间】:2012-07-08 01:19:16
【问题描述】:

我想让我的 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 的伴侣。 必须一起定义同伴;您可能希望为此使用 :paste 模式。

【问题讨论】:

  • 嗯,你试过用:paste定义它吗?
  • 我找不到任何关于 :paste 的含义的信息 :( 显然,这与 REPL 有关,但我当然也希望它在 REPL 之外工作
  • 只需输入 REPL,然后复制并粘贴(或输入)type 别名和 val 分配。这是一个仅限 REPL 的问题,因此在其他代码中应该无关紧要。
  • 哦,好吧,我明白了,这只是 REPL 的一个“问题”。好的。谢谢!

标签: scala companion-object


【解决方案1】:

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

因此,另一种方法 - 编写 val IntSeq = Seq - 将真正起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多