偏函数collect

package chapter04

object test09 {
  def main(args:Array[String]):Unit={

    val list = List(1,2,3,4,"abc")


    val list2: List[AnyVal] = list.map(x => {
      if (x.isInstanceOf[Int]) {
        x.asInstanceOf[Int] + 1
      }
    })
    println(list2) //List(2, 3, 4, 5, ())
    val list3: List[AnyVal] = list2.filter(x=>x.isInstanceOf[Int])
    println(list3) //List(2, 3, 4, 5)


    //TODO MAP
    def f1(n:Any):Boolean={n.isInstanceOf[Int]}
    def f2(n:Int):Int={n+1}
    def f3(n:Any):Int={n.asInstanceOf[Int]}

    val list4: List[Int] = list.filter(f1).map(f3).map(f2)
    println(list4)


    //TODO 偏函数1
    val addOne3=new PartialFunction[Any,Int] {  //Any参数类型,Int返回值类型
      def isDefinedAt(any: Any): Boolean = {
        if(any.isInstanceOf[Int]) true
        else false
      }
      def apply(any:Any)=any.asInstanceOf[Int]+1
    }
    //collect:满足条件的数据操作,map:对全部数据操作
    val list5: List[Int] = list.collect(addOne3)
    println(list5)


    //TODO 偏函数2
    def f4:PartialFunction[Any,Int]={
      case i:Int=>i+1
    }

    val list6: List[Int] = list.collect(f4)
    println(list6)

    //TODO 偏函数3
    val list7: List[Int] = list.collect{case i:Int=>i+1}
    println(list7)








  }

}

 

posted on 2020-08-14 11:28  happygril3  阅读(113)  评论(0)    收藏  举报

导航