偏函数
偏函数是一个特质,用来专门处理某数据类型[可以同时处理多种数据类型]
例如:
def main(args: Array[String]): Unit = {
val arr1 =List(1,6,2,3.0,4.0,"java","hello",'a',true)
//new 一个PartialFunction接口 实现他的抽象方法
//也可以直接定义一个偏函数
val ls =new PartialFunction[Any,String] {
override def isDefinedAt(x: Any): Boolean = {
x.isInstanceOf[String]
}
override def apply(v1: Any): String = {
v1.asInstanceOf[String].toUpperCase
}
}
arr1.collect(ls).foreach(println)
println("-------------简写方法1-------------")
val res1 :PartialFunction[Any ,Int]={
// 底层是偏函数 判断每个元素是否是 Int类型
case x:Int =>x*x
}
arr1.collect(res1).foreach(println)
println("------------简写方法2---------------")
// 底层是偏函数
// 接收的的类型一般是Any 待处理的类型也是Any(处理要处理的多个数据类型)
val res2 :Seq[Any] = arr1.collect{
case x: String => x.toUpperCase
case x: Int => x*x
}
res2.foreach(println)
}
}



