小编Ami*_*shi的帖子

为什么Scala函数接受函数参数的case类类型?

考虑代码块.

class Evaluation {
  def evaluate= {
    println("Charlie...")
  }
}
case class Dept(name:String) extends Evaluation

def depEval(name:String,f:(String) => Evaluation) ={
  println(name)
  f(name).evaluate
}
depEval("abc", Dept)
Run Code Online (Sandbox Code Playgroud)

为什么Dept可以作为Funtion1类型传递?是这样,Scala在解析参数之前不会检查类型.

考虑其他代码段

def matchingCase(f: String => Evaluation)= {
  println(f.toString())
  f match {
    case Dept => println("function type matched")
  }
}

matchingCase((x: String)=> Dept(x))
Run Code Online (Sandbox Code Playgroud)

而在上面的代码中scala给出了匹配错误,正如预期的那样.

functional-programming scala

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

标签 统计

functional-programming ×1

scala ×1