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