、私は次の操作を実行できます。apply()はパッケージオブジェクトの省略形では使用できないのはなぜですか?通常のオブジェクトに
object A {
def apply = "!"
}
A() // "!"
しかし、パッケージオブジェクト上で、これは動作しません:
package object A {
def apply = "?"
}
A.apply // "?"
A() // compile error
// error: package A is not a value
は、いくつかの基本的な制限はありますか?それとも、コンパイラをちょっと微調整して修正することができる実装の制限ですか?あなたはそれをせずに適用できること
これで何をしたいですか?なぜノーマルオブジェクトを使用しないのですか? –
@SergeyPassichenko - たとえば、コードベース全体にインポートなしでいくつかのメソッドを呼び出す場合 - パッケージオブジェクト "monkey"とメソッド "apply"がある場合、どの場所でも "monkey()"を実行できます。これは一例ですが、私はパッケージオブジェクトが通常のオブジェクトと大きく異なる理由にも興味があります。 – Rogach