简介 目录 评价 推荐
  • 霜花似雪 2022-12-06

    object sortDemo {
     def qSort(a: List[Int]): List[Int] = {
       if (a.length < 2) a
       else qSort(a.filter(a.head > _)) ++
       a.filter(a.head == _) ++
       qSort(a.filter(a.head < _))
     }

     def main(args: Array[String]): Unit = {
       println(qSort(List(6,4,5,3,1,2,9,8,0)))
     }
    }

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    实现快速排序

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    Map

    定义一个Map: val p = Map(1 -> "David", 9 -> "Bob")

    取出值:p(key), 比如:p(1), p(9)

    判断key是不是在map中: p.contains(key)

    取出所有key: p.keys

    取出所有值:p.values

    添加一个键值: p + (8 -> "Tom")

    删除一个键值: p - 1

    添加多个键值对: p ++ List(2-> "Alice", 5 -> "piter")

    减去多个键值对: p -- List(1, 9, 2)

    http://img3.mukewang.com/638e278e000100dc11320571.jpg

    http://img3.mukewang.com/638e285b0001dfdc12780543.jpg

    http://img1.mukewang.com/638e289f00014c1511880310.jpg

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    Tuple(元组):

    定义2个字段的元组  (1,2) 或  1 ->2

    访问元组中的元素: z._1 (z元组的第一分量)


    Map[K,V]:

    定义Map   val  p = Map(1  ->  "David",9   ->"Lili")

                                  Map(1 -> David, 9 -> Lili) 

    p(1)       David   取p Map 的值

    p.contains(1)   判断key在不在  p Map中

    p.keys   取所有key

    p.values  取所有value

    p + ( k -> v)  添加值

    p -  k    删除值

    p  ++ List(k -> v ,k -> v)  添加多个值

    p  --  List(k,k)  减去多个值

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    Stream 惰性求值

    http://img.mukewang.com/638e23ad0001b53c09300399.jpg

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    Range(整数序列):

    生成Range

    1 to 10     Range(1,2,3,4,5,6,7,8,9,10)

    1 to 10  by 2    Range(1,3,5,7,9)

    1 until 10  Range(1,2,3,4,5,6,7,8,9)

    Stream(惰性求值列表):

    列表的第一个值确定,其他值在使用时才会计算

    1  #::  2 #:: 3 #::  Stream.empty                Stream(1,  ?)

    val  stream = (1  to  1000000).toStream     Stream(1, ?)

    .head  第一个值

    .tail     第一个值后面的所有值

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    集合的归约:

    reduceLeft(匿名函数):将集合中的元素,按匿名函数的规则进行处理,处理的结果的类型和集合元素的类型一致

    reduceLeft(op:  (T,T)  => T)

    foldLeft(初始值)(匿名函数):将集合中的元素与初始值,按匿名函数的规则进行处理,处理的结果类型与初始值类型一致。

    foldLeft(z  : U)(op: (U,  T) =>U)

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    List高阶函数:

    map:根据函数规则对List中的每个参数做映射

    c.map(x=>x.toUpperCase) 等价于 c.map( _.toUpperCase  )

    与filter不同:filter的规则是Boolean类型的

    flatMap:将多层的List打平

    http://img4.mukewang.com/638e1ffb0001f81709010483.jpg

    http://img3.mukewang.com/638e20490001729d08520478.jpg

    0赞 · 0采集
  • 霜花似雪 2022-12-06

    List的高阶函数:

    filter(判断函数):遍历集合,保留符合判断函数的元素

    toList:将字符串变成List[Char]集合

    takeWhile(判断函数):遍历集合,根据判断函数截取集合元素

    http://img.mukewang.com/638e1dda00012c4b10160477.jpg

    0赞 · 0采集
  • zrey 2022-04-02
    //for
    for {
        x <- xs
        y= x+1
        if(y>0)
    }yield y
    
    //if
    if (exp) valA else valB

    0赞 · 0采集
  • zrey 2022-04-02

    函数 代码块

    def function( param: ParamType): ReturenType={
        //body
    }


    0赞 · 0采集
  • zrey 2022-04-02

    三种变量修饰符
    val 定义常量,不可修改
    var 定义变量
    lazy val 只要第一次使用到时候,才会运算表达式得到值
    可以不显示指定变量的类型,因为Scala会自动进行类型推导

    Unit类型: 类似Java的Void, 一般作为函数返回值

    有Unit一般是副作用,因为函数没返回值


    异常值: ()Nothiong


    String
    - 构建于Java的String之上
    - 新增了字符串插值(interpolation)的特性

    ```scala
    val myname = "lizhy" \\ creating a String
    s"My name is ${myname}" \\ String interpolation
    ```

    在scala语言中,所有的事物都是对象

    0赞 · 0采集
  • zrey 2022-04-01

    在计算机科学领域,函数式编程是一种编程范式,它是一种构建计算机程序结构的方法和风格,它把程序当做数学函数的求值过程并且避免了改变状态和可变的数据
    二、函数式编程的重要概念:
    2.1 纯函数(Pure Function),或函数的纯粹性(Purity),没有副作用(Side Effect)。
    副作用是状态的变化(mutation):例子:修改全局变量,抛出异常,IO读写,调用有副作用的函数。

    2.2 引用透明(Referential Transparency):对于相同的输入,总是得到相同的输出。
    如果f(x)的参数x和函数体都是引用透明的,那么函数f是纯函数。

    2.3 不变性(Immutability)为了获得引用透明性,任何值都不能变化。
    2.4 函数是一等公民(First-class Function):一切都是计算,函数式编程中只有表达式,变量、函数都是表达式。
    三、高阶函数(Higher order Function)
    闭包(Closure)
    表达式求值策略:严格求值非严格求值  Call By Value  vs.  Call By Name
    惰性求值(Lazy Evaluation):定义表达式不会立即求值,用到后才会求值。
    递归函数,函数式编程没有循环,循环由递归实现。调优递归:尾递归。

    0赞 · 0采集
  • zrey 2022-04-01

    Scalable编程语言。
    纯正的面向对象语言。
    函数式语言
    构建于jvm之上,能互相直接调用,无缝和java互操作

    JAVA和SCALA互相直接调用!

    0赞 · 0采集
  • str水煮鱼 2021-03-29

    http://img.mukewang.com/606187dd0001074407710427.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-29

    http://img.mukewang.com/606187dd0001074407710427.jpg

    快排

    0赞 · 0采集
  • str水煮鱼 2021-03-29

    http://img.mukewang.com/606187dd0001074407710427.jpg

    快排

    0赞 · 0采集
  • str水煮鱼 2021-03-29


    http://img1.mukewang.com/6061372c0001621a08050686.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    柯里化

    http://img1.mukewang.com/605ab0d10001bdfa05490244.jpg

    http://img4.mukewang.com/605ab10600016ed304500216.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    高阶函数

    http://img4.mukewang.com/605aa6e60001939e05760304.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    列子2

    http://img.mukewang.com/605aa63d0001bec104740332.jpg

    返回1

    bar(1,loop)    先1进行计算,返回1,方法体没用到loop 不被调用

    bar(loop,1)一直循环         先loop进行计算,无法返回

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    例子

    http://img4.mukewang.com/605aa553000134b205840315.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    求值策略

    http://img.mukewang.com/605a9da9000101cb05270286.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    match = java 的switch


    http://img4.mukewang.com/605a9cca00019f8904330324.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    try

    http://img3.mukewang.com/605a9c8e00014c3403430314.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    for

    http://img1.mukewang.com/605a9c700001525b03780281.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-24

    if

    http://img3.mukewang.com/605a9b890001c70a05490341.jpg

    0赞 · 0采集
  • str水煮鱼 2021-03-23

    http://img3.mukewang.com/6059a78b00012b1506080342.jpg

    unit 等于java 中的void

    0赞 · 0采集
  • 慕后端4477088 2020-07-24

    常用数据结构

    截图
    0赞 · 0采集
  • 慕后端4477088 2020-07-24

    scala中 函数可以作为变量使用 可以传参 返回值 赋值给变量 存储在数据结构里

    0赞 · 0采集
数据加载中...
开始学习 免费