标签:过滤器 捕获异常 lan 编译 的区别 java break exce 集合
Scala的控制结构有:if、while、for、try、match和函数调用。
if可以作为一个返回值,如下面的代码。同时用val,就像Java的final变量一样,一旦初始化就不会改变。
val filename =
if (!args.isEmpty) args(0)
else "default.txt"
Scala的While循环和其他语言没多大差别。有while循环和do-while循环。while循环返回的不是有意义的值,而是Unit。
一个注意的点,是对var的赋值。
var line = ""
while ((line = readLine()) != "")
println("read" + line)
这段代码在编译时,用!=对类型为Unit的值和String作比较,将永远返回true。其中line = readLine()返回的值是Unit,即用于返回()。而不是“”的值。这样循环条件永远为真。
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)
嵌套迭代,就是多个< -子句。
需要创建一个异常对象然后用throw关键字将它抛出。
throw new IllegalArgumentException
使用try-catch子句。如果抛出异常,会依次尝试每个catch子句。
break是隐含的。
firstArg match {
case ” salt ”= > prin t ln("pepper ”)
case ” chips" => println("salsa ”)
case "eggs ”=> println (” bacon ”)
case _ => println("huh ?”)
Scala去掉了break和continue。使用Break类中的break方法。一旦遇到break会从外层的breakable代码块退出。
breakable {
while(true) {
println()
if () break
}
}
标签:过滤器 捕获异常 lan 编译 的区别 java break exce 集合
原文地址:https://www.cnblogs.com/chenshaowei/p/13134565.html