码迷,mamicode.com
首页 > 其他好文 > 详细

控制结构(Scala)

时间:2020-06-15 19:21:42      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:过滤器   捕获异常   lan   编译   的区别   java   break   exce   集合   

控制结构

Scala的控制结构有:if、while、for、try、match和函数调用。

if表达式

if可以作为一个返回值,如下面的代码。同时用val,就像Java的final变量一样,一旦初始化就不会改变。

val filename = 
    if (!args.isEmpty) args(0)
    else "default.txt"

while循环

Scala的While循环和其他语言没多大差别。有while循环和do-while循环。while循环返回的不是有意义的值,而是Unit。

一个注意的点,是对var的赋值。

var line = ""
while ((line = readLine()) != "")
    println("read" + line)

这段代码在编译时,用!=对类型为Unit的值和String作比较,将永远返回true。其中line = readLine()返回的值是Unit,即用于返回()。而不是“”的值。这样循环条件永远为真。

for表达式

for可以表达各式各样的迭代,可以遍历整数序列,也可以遍历不同种类的集合。

val filesHere = (new java.io.File(".")).listFiles
for (file <- filesHere)
    println(file)

通过“file < - filesHere”这样的生成器,我们可以遍历其中的元素。其中file是val类型的。

util和to的区别:

// 1,2,3,4
for (i <- 1 to 4)
// 1,2,3
for (i <- 1 util 4)

可以给for表达式添加过滤器。在for语句后加一个if子句。可以添加很多个if,形成多个过滤器.

for (
    file <- filesHere
    if file.isFile
    if file.getName.endWith(".scala")
)
    println(file)

嵌套迭代,就是多个< -子句。

用try表达式实现异常处理

需要创建一个异常对象然后用throw关键字将它抛出。

throw new IllegalArgumentException
捕获异常

使用try-catch子句。如果抛出异常,会依次尝试每个catch子句。

match表达式

break是隐含的。

firstArg  match {
case ” salt ”= >  prin t ln("pepper ”)
case ” chips"  =>  println("salsa ”)
case  "eggs ”=>  println (” bacon ”)
case  _  =>  println("huh ?”)

没有break和continue

Scala去掉了break和continue。使用Break类中的break方法。一旦遇到break会从外层的breakable代码块退出。

breakable {
    while(true) {
        println()
        if () break
    }
}

控制结构(Scala)

标签:过滤器   捕获异常   lan   编译   的区别   java   break   exce   集合   

原文地址:https://www.cnblogs.com/chenshaowei/p/13134565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!