scala中のclassとobjectの文法糖

653 ワード

まずscalaではclassがクラスであり、objectがオブジェクトであることを知っています.classとobjectが同名であれば、peopleクラスを書くなど、相手を伴生オブジェクトまたは伴生クラスと呼びます.
class people(id : Int, name : String){
    def say = "hello :"+ name + ",my id is :"+id    
}
object people{
    def apply(id : Int, name : String) = {
        println("is apply")
        new people(id, name)
    }
}

object test{
    def main(args : Array[String]){
        val p = people(2, "tom")
        p say
    }
}

このコードの中で、私はnew peopleを持っていません.これはなぜですか.これは伴生オブジェクトの利点であるため、newキーワードを必要としない伴生オブジェクトを作成するため、people(2,「tom」)は実際にその中のapplyメソッドを呼び出し、scalaの文法糖であり、このような設計はコードをより簡素化する.