On normal objects, I can do the following:
object A {
def apply = "!"
}
A() // "!"
But on package objects, this doesn't work:
package object A {
def apply = "?"
}
A.apply // "?"
A() // compile error
// error: package A is not a value
Is there some fundamental limitation? Or is it just an implementation limitation, which I can fix by tweaking the compiler a bit?
The only way you can do it without apply is this:
A.`package`()
This is because A does not denote a value or a method, and the language specification states that for f() to be valid, f has to have a method type or a value type with an apply method. I have no idea how easily one could "tweak" the compiler to change this, but I doubt it's worth the effort. If you do want to go to such lengths, it would be easier to just add your method to Predef.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With