gpt4 book ai didi

scala - 为什么不能以简写形式在包对象上使用apply()?

转载 作者:行者123 更新时间:2023-12-04 07:05:31 25 4
gpt4 key购买 nike

在普通对象上,我可以执行以下操作:

object A {
def apply = "!"
}
A() // "!"

但是在包对象上,这不起作用:
package object A {
def apply = "?"
}
A.apply // "?"
A() // compile error
// error: package A is not a value

有一些基本的限制吗?还是仅仅是实现限制,我可以通过稍微调整一下编译器来解决?

最佳答案

您无需应用即可完成此操作的唯一方法是:

A.`package`()

这是因为 A不表示值或方法,并且语言规范指出,为了使 f()有效, f必须具有 apply方法的方法类型或值类型。我不知道一个人可以多么容易地“调整”编译器来更改它,但是我怀疑这样做是值得的。如果您确实想达到这样的长度,只需将方法添加到 Predef会更容易。

关于scala - 为什么不能以简写形式在包对象上使用apply()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com