为了账号安全,请及时绑定邮箱和手机立即绑定

Scala程序设计—基础篇

辰方 其它
难度初级
时长 2小时13分
学习人数
综合评分9.63
93人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 尾递归函数
    尾递归函数(Tail Recursive Function)中所有递归形式的调用都出现在函数的未尾。
    当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。

    查看全部
  • 注意尾递归函数的写法,loop 函数定义了两个参数表示区间变量和累加和,这是关键。另外,f(x)函数用匿名推导来定义,灵活的推广到二阶和三阶求和。
    查看全部
    0 采集 收起 来源:例子

    2019-07-07

  • # 函数式编程

    > 命令式编程在理论上上升到语言学的层次,不可判定的问题很多,且为了实用引人更多的模糊地带,是不够严密的。而函数式编程关心语义,从数理逻辑出发建立基础,例如三大语义,泛代数,可靠性完备性,合流,规约等概念,体系上更严密。而且视公理化为头等大事。 - https://www.zhihu.com/question/36782552

    - 函数式编程是一种编程范式

    ## 范式(Paradigm)

    - 范式包括 philosophy (理念) 和 methods (方法)两部分

        1. 某事的 philosophy (理念) 就是,做某事,什么该做,什么不该做,以及方式

        2. Methods (方法)就是继方式之后的具体的操作


    ## 函数式编程没有副作用

    > 副作用指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果。函数式编程强调没有"副作用",意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。

    ```scala

    var x=1

    def XPlusY_v1(y: Int)=x+y

    def XPlusY_v2(y: Int)={x+y;x} //有副作用,改变了x的值

    ```


    ## 函数式编程引用透明

    - 对于相同的输入,总是得到相同的输出

    - 如果f(x)的参数x和函数体都是透明的,那么函数f(x)是纯函数

    ```scala

    var x = new StringBulider("Hello")

    var y = x.append(" World!") //Hello World!

    var z = x.append(" World!") //Hello World! World!

    // appned 方法违反了引用透明性

    ```

    ### 不变性 Immutability

    - 为了获得引用透明性,任何值都不能变


    ## 表达式求值

    1. 严格求值 call by value

    2. 非严格求值 call by name


    查看全部
  • try catch finally 跟Java差不多 只不过catch这里是个表达式


    code match 类似switch

    查看全部
  • if条件判断 没有设置值默认{}

    for循环 s <- l  赋值  yield配合变量将新的值打印出来

    查看全部
  • Scala的函数可以足够聪明知道函数的返回值类型
    Scala的函数简单的一行表达式不需要函数括号


    查看全部
  • 底精度变量可以直接向高精度变量转换

    Unit 表示无值,和其他语言中void等同,用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

    Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。函数出错会返回Nothing。

    函数定义

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

    字符串占位符:

    var e = "bob";
    
    println(s"your name is ${e}")


    查看全部
    0 采集 收起 来源:Scala数据类型

    2019-04-26

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


    查看全部
  • Scala里有两种求值策略(Evaluation Strategy)
    Call By Value - 对函数实参求值,且仅求值一次
    Call By Name - 函数实参每次在函数体内被用到时都会求值


    查看全部
    0 采集 收起 来源:求值策略

    2019-04-15

  • try 在Scala里面不是一个语句,而是一个表达式


    查看全部
  • Scala的for循环和Java的有很大差异,但基本原理是一致的。


    查看全部
  • 1. 在Scala IDE中有一个很便捷的功能,那就是WorkSheet
    它类似于交互式命令行的代码测试,在Worksheet输入scala表达式,保存以后会立即得到程序运行的结果
    2. Scala的函数可以足够聪明知道函数的返回值类型
    3. Scala的函数简单的一行表达式不需要函数括号


    查看全部
  • 底精度变量可以直接向高精度变量转换

    Unit 表示无值,和其他语言中void等同,用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

    Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。函数出错会返回Nothing。

    查看全部
    0 采集 收起 来源:Scala数据类型

    2019-04-13

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


    查看全部
  • Install Java JDK
    Download Scala
    Install SBT
    REPL (Read Evaluate Print Loop)
    Install Scala IDE


    查看全部
    0 采集 收起 来源:scala环境搭建

    2019-04-08

举报

0/150
提交
取消
课程须知
本课程是Scala的基础教程,虽然对学员的基础不做要求,但是学员最好有一门编程语言的经验,这样会更容易理解课程里的一些概念。
老师告诉你能学到什么?
1、函数式编程的基本概念 2、Scala的开发环境 3、高阶函数 4、表达式求值策略 5、Scala Immutable Collection简介

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!