首页 > 解决方案 > Scala 部分应用案例类定义的奇怪行为

问题描述

当我尝试通过一系列其他类应用案例类的部分构造时,我得到了一个意想不到的(至少对我而言)结果。

这是 Scala 2.11.12


object PartiallyAppliedWeirdness {
 
   case class Person(dob: String)(name: String)

  class Born(dob: String) {
    def namingFunction: String => Person =  Person(dob)
  }

  class Naming(bornPerson: Born,name: String) {
    def namingFunction: Person = bornPerson.namingFunction (name)
  }


  def main(args: Array[String]): Unit = {
    val birth: Born = new Born("2010-01-01")
    val somPerson: Person = new Naming(birth, "Dave").namingFunction
    println(somPerson)
    println(somPerson.getClass)
  }
}

结果

Person(2010-01-01)
class PartiallyAppliedWeirdness$Person

怎么会这样!谁能解释这里发生了什么?谢谢

标签: scala

解决方案


推荐阅读