控制结构(Scala)

Posted chenshaowei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制结构(Scala)相关的知识,希望对你有一定的参考价值。

控制结构

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)的主要内容,如果未能解决你的问题,请参考以下文章

就是个控制结构,Scala能有什么新花样呢?

scala控制结构:条件表达式与循环

Scala中的控制结构

Scala的控制结构和函数

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

就是个控制结构,Scala 能有什么新花样呢?