小编mon*_*onk的帖子

scala:覆盖命名参数

鉴于下面的代码

class Parent {
  def mth(p1: Int = 1, p2: Int = 2) = p1 + p2
}
class Child extends Parent{
  override def mth(p2: Int = 10, p1: Int = 20) = super.mth(p2, p1)
}
object Main {
  def main(args: String[]) = {
    val parentRefToChild: Parent = new Child
    println(parentRefToChild.mth(p1=1))   // 21
  }
}
Run Code Online (Sandbox Code Playgroud)

输出是,21但我认为应该是11.在检查已编译的.class文件时,我发现parentRefToChild.mth(p1=1)编译为parentRefToChild.mth(1, parentRefToChild.mth$default$2()).scala编译器如何以这种方式运行.

scala

2
推荐指数
1
解决办法
163
查看次数

标签 统计

scala ×1