开发者学堂课程【Scala 核心编程-基础:温故知新】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8945
温故知新
内容简介
一、函数式编程的基础
二、函数注意事项和细节讨论
三、Java 异常处理注意点
四、Scala 异常处理小结
上次讲的内容是从循环讲起,大概是把 Scala 循环的特点和 var 作比较,这是基础部分。之前讲了函数式编程内容及授课顺序说明
一、函数式编程的基础
1、函数式的式
(1)样式
(2)形式
(3)方式
其实函数式编程最重要的就是式,函数在其中也担任了基础部分;在之前写代码 res1. foreach (my show)时,可以观察到把函数当作了基础的变量,作为传递也很方便。
原先的处理方法,本身就是一个逆序过程,有提到,函数变量反着来的。一般情况下,在 Java 中是函数接收这个参数;在函数式编程里,有一特点,在集合调用函数时,又传了一个函数,传上去的函数可以对集合里的每一个元素进行处理,这样的设计很符合大数据的应用场景。
因为在大数据中,对数据的处理本质就是对集合的处理,而在对集合的处理时,一定要用到函数;反过来说,用一个集合去调函数,然后把集合交给了上传的函数处理,相当于上传的函数反过来了,在之前是把参数给函数处理的,现在的处理方式就是把集合中的每一个元素交给了上传的函数处理;处理完一个集合后,还支持再调函数,再调函数中还可以再上传函数,依次类推,可以形成一个函数链的编程方式。
之后再讲到时,会写到一个案例,就是统计一篇文章中有多少单词,并按照从小到大的顺序进行排序,一行代码便可以解决,Java 要想做到这样便很难,这种编程方式会很简洁,这是核心思想,里面还引出了很多东西,比如要如何传,怎么定义和如何性能优化等等。
2、在函数式编程高级中
值函数
高阶函数
闭包
应用函数
柯里化函数、抽象控制等等
二、函数注意事项和细节讨论
1、函数的形参列表可以是多个,如果函数没有形参,调用时可以不带;
2、形参列表和返回值列表的数据类型可以是值类型和引用类型;
3、Scala 中的函数可以根据函数体最后一行代码自行推断函数返回值类型,在此情况下,return 关键字可以省略;
4、因为 Scala 可以自行推断,所有省略 return 关键字的场合,返回值类型也可以省略;
5、如果函数明确使用 return 关键字,那么函数返回就不能使用自行推断了,这时要明确写成回类型=,当然如果什么都不写,即使有 return 返回值为0。
三、Java 异常处理注意点
1、java 语言按照 try—catch-catch...—finally 的方式来处理异常;
2、不管有没有异常捕获,都会执行 finally,因此通常可以在 finally 代码块中释放资源;
3、可以有多个 catch,分别捕获对应的异常,这时需要把范围小的异常类写在前面,把范围大的异常类写在后面,否则编译错误。会提示“Exception 'java. lang. xx' has already been caught"。
四、Scala 异常处理小结
1、我们将可疑代码封装在 try 块中。在 try 块之后使用了一个 catch 处理程序来捕获异常。如果发生任何异常,catch处理程序将处理它,程序将不会异常终止;
2、Scala 的异常的工作机制和 Java 一样,但是 Scala 没有“checked(编译期)”异常,即 Scala 没有编译异常这个概念,异常都是在运行的时候捕获处理;
3、用 throw 关键字,抛出一个异常对象。所有异常都是 Throwable 的子类型。throw 表达式是有类型的,就是Nothing,因为 Nothing 是所有类型的子类型,所以 throw 表达式可以用在需要类型的地方。
以上的方法和总结需要去实践过程中加固,可以尝试去写代码来巩固知识点。