scala课堂笔记(自用)

目录

一.函数

1.匿名函数

2.map函数 ,filter函数,reduce函数(由于分开解释太麻烦这里直接统一整)

 二.多维列表

三.对数据进行操作

四.模式匹配



一.函数

1.匿名函数

 val a =(x:Int,y:Int) => x+y
    println(3,4)

输出结果:7

2.map函数 ,filter函数,reduce函数(由于分开解释太麻烦这里直接统一整)

map 为映射函数(也就是遍历)"()"括号里的是遍历后进行的操作

filter 为过滤函数 ,“()" 括号里的是条件

take ,取前几位数

reduce ,累加

 val list =List(1,2,3,4,5,6,7,8)
    val r1=list.map((x:Int)=>x+1)  //r1和r2是一样的只是x的类型可以不写,系统会自动判定
    val r2 =list.map(x=>x+1)
    val r3 =list.map(_+1)    //"-"下划线(占位符)表示遍历后所有的元素
    println(r1)
    println(r2)
   println(r3)
   val r4=list.map(_*2).filter(_%3==0).take(1)  //filter 过滤 括号里的条件  take 取前几个
   println(r4)
    println(r4.max)   //max (过于通用不想解释)
   val r5=r1.reduce(_+_)   //reduce 累加

输出结果:List(2, 3, 4, 5, 6, 7, 8, 9)
List(2, 3, 4, 5, 6, 7, 8, 9)
List(2, 3, 4, 5, 6, 7, 8, 9)
List(6)
6
44

 二.多维列表

//创建一个二维列表f
val f=List(List(1,2),List(3,4),List(5,6),List(7,8))
   println(f)

    val r6=f.flatten.reduce(_+_) 
//flatten ,扁平化,也就是“降维打击”  0.0!,打击后会成为一维列表,然后进行reduce,累加
    println(r6)

    val r7 =f.flatMap(_.map(_*2))  //flatMap,先扁平然后遍历输出,输出结果都乘2
    println(r7)
    val r8 =f.flatMap(_.map(_*2)).foreach(println)  //foreach 循环 println 输出
    println(r8)

 输出结果:List(List(1, 2), List(3, 4), List(5, 6), List(7, 8))
36
List(2, 4, 6, 8, 10, 12, 14, 16)
2
4
6
8
10
12
14
16
()

三.对数据进行操作

  val list=List(1,2,3,4,"abc")  //创建一个定长列表list 
    def  f1(n:Any):Boolean={    //定义一个函数f1,内容是判断n是否是Int类型
      n.isInstanceOf[Int]
    }
    def f2(n:Int):Int={    //定义一个函数f2,内容是n乘2
      n*2
    }
    def f3(n:Any):Int={
      n.asInstanceOf[Int] 
//定义一个函数f3,内容是把n转换成Int类型,在用asInstanceOf[]之前一定要用isInstanceOf
    }
      val list1=list.filter(f1).map(f3).map(f2)  //filter(f1)  用f1过滤
    println(list1)

 输出结果:List(2, 4, 6, 8)

四.模式匹配

 val list=List(1,3,4,"abc")
//方法一:
    def mutlitwo(i:Any):Any={
      i match {
        case x:Int=>x*2
        case _=>
      }
    }
    val list1=list.map(mutlitwo)
    println("list1="+list1)

//方法二:
    def f2:PartialFunction[Any,Int]={
      case i: Int=>i*2
    }
    val list1=list.collect(f2)
    println(list1)

输出结果:list1=List(2, 6, 8, ())

List(2, 6, 8)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值