twitter / scala_school

Lessons in the Fundamentals of Scala
https://twitter.github.io/scala_school
Apache License 2.0
3.71k stars 1.13k forks source link

关于偏函数概念的一些疑惑 #195

Closed chenzhikaida closed 7 years ago

chenzhikaida commented 7 years ago

对给定的输入参数类型,偏函数只能接受该类型的某些特定的值。一个定义为(Int) => String 的偏函数可能不能接受所有Int值为输入。

对于不能接受所有Int值的输入这句话不是太理解,网上搜了很多关于偏函数的资料没有找到能够印证这句话的代码。能举一个例子吗?非常感谢!

chenzhikaida commented 7 years ago

意思是假设我把 case _=>“other”这个条件去掉,就只能输入指定的数字是吗?类似于枚举?

val pf:PartialFunction[Int,String]={
  case 1 => "one"
  case 2 => "two"
  case _ => "other"
}
def main(args: Array[String]): Unit = {
  println(pf(4))//返回other
}
chenzhikaida commented 7 years ago

我是这么理解的,偏函数有点像switch,case _ 条件类似于 switch中的default。如果不加的话,没有被匹配的条件并且没default就会报错。可以这么理解吗?