Chapter 07 《Built-in Control Str

作者: liqing151 | 来源:发表于2018-06-12 19:50 被阅读0次
    1. Scala中的内建控制结构非常少,只有if,while,for,try,match和函数调用。得益于Scala将函数作为一等公民,可以将更高级的控制结构使用类库实现,而不是在基础语法中不断地添加高级控制结构。
    1. 控制结构中的if,for,try,match都能返回一个值,while是循环,而不是表达式,因为while并不返回某个值。while循环要对程序产生作用的话就必须修改var变量或者进行I/O操作,因此一般不是很建议使用while循环。
    1. 赋值语句的结果是Unit

for表达式
    1. for表达式的语法可以被用于各种各样的集合,而不仅仅是在数组中。line <- lines被成为生成器。
    1. 用于遍历,很少使用数字下标的方式,因为for表达式可以直接遍历访问集合。
    1. 用于过滤,是for表达式中的一个if字句,可以使用多个if条件完成过滤。
for (
file <- filesHere
if file.isFile
if file.getName.endsWith(".scala")
) println(file)
    1. 嵌套循环:使用多个<-生成器,则会得到嵌套循环。
    1. 产出一个新的集合:用yield关键字,在for语句执行完毕之后,得到最终的结果。

使用try来处理异常
    1. Java是类似的,如果抛出了异常,就不能够再继续运行程序。可以在最后使用finally保证资源被关闭了。
    1. if中的两个分支,一个有返回类型;一个抛出异常完全是可以的。因为抛出异常的返回值为Nothing,是所有类型的子类。
    1. try-catch-finally最后会交出一个值,这个值的类型是trycatch表达式返回类型的最近祖先。如果finally字句中没有return关键字,该语句的值会被丢弃。如果是有的话,会替代tryfinally的值。推荐的是不替代,否则会使程序员迷茫。而且在finally中不推荐做这样的操作,只处理一些资源关闭的动作之类的。

match
  • 用于match的表达式可以是任意的表达式,而且match表达式有返回语句。

相关文章

网友评论

    本文标题:Chapter 07 《Built-in Control Str

    本文链接:https://www.haomeiwen.com/subject/gnureftx.html