Chapter 07 《Built-in Control Str
-
Scala中的内建控制结构非常少,只有if,while,for,try,match和函数调用。得益于Scala将函数作为一等公民,可以将更高级的控制结构使用类库实现,而不是在基础语法中不断地添加高级控制结构。
- 控制结构中的
if,for,try,match都能返回一个值,while是循环,而不是表达式,因为while并不返回某个值。while循环要对程序产生作用的话就必须修改var变量或者进行I/O操作,因此一般不是很建议使用while循环。
- 赋值语句的结果是
Unit。
for表达式
-
for表达式的语法可以被用于各种各样的集合,而不仅仅是在数组中。line <- lines被成为生成器。
- 用于遍历,很少使用数字下标的方式,因为for表达式可以直接遍历访问集合。
- 用于过滤,是for表达式中的一个if字句,可以使用多个if条件完成过滤。
for (
file <- filesHere
if file.isFile
if file.getName.endsWith(".scala")
) println(file)
- 嵌套循环:使用多个
<-生成器,则会得到嵌套循环。
- 产出一个新的集合:用
yield关键字,在for语句执行完毕之后,得到最终的结果。
使用try来处理异常
- 和
Java是类似的,如果抛出了异常,就不能够再继续运行程序。可以在最后使用finally保证资源被关闭了。
-
if中的两个分支,一个有返回类型;一个抛出异常完全是可以的。因为抛出异常的返回值为Nothing,是所有类型的子类。
-
try-catch-finally最后会交出一个值,这个值的类型是try和catch表达式返回类型的最近祖先。如果finally字句中没有return关键字,该语句的值会被丢弃。如果是有的话,会替代try和finally的值。推荐的是不替代,否则会使程序员迷茫。而且在finally中不推荐做这样的操作,只处理一些资源关闭的动作之类的。
match
- 用于
match的表达式可以是任意的表达式,而且match表达式有返回语句。
本文标题:Chapter 07 《Built-in Control Str
本文链接:https://www.haomeiwen.com/subject/gnureftx.html
网友评论