在普通对象上,我可以执行以下操作:
object A {
def apply = "!"
}
A() // "!"
Run Code Online (Sandbox Code Playgroud)
但是在包对象上,这不起作用:
package object A {
def apply = "?"
}
A.apply // "?"
A() // compile error
// error: package A is not a value
Run Code Online (Sandbox Code Playgroud)
有一些基本的限制吗?或者它只是一个实现限制,我可以通过稍微调整编译器来解决这个问题?
Kim*_*bel 10
你可以在没有申请的情况下做到这一点的唯一方法是:
A.`package`()
Run Code Online (Sandbox Code Playgroud)
这是因为A不表示值或方法,并且语言规范声明f()要使其有效,f必须具有方法类型或具有方法的值类型apply.我不知道有多么容易"调整"编译器来改变它,但我怀疑这是值得的.如果你想要达到这样的长度,那么只需添加你的方法就更容易了Predef.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |