Scala内建控制结构
Scala内建控制结构
If表达式(Scala的if语句与其他语言的if相比没有什么不同)
val filenName=
if(!args.isEmpty) args(0)
else "default"
While循环(与其他语言的While一致)
def loop(x : Int,y: Int): Int ={
while (x!=0){
val temp=x
x=y%x
y=temp
}
y
}
for表达式(for表达式语法对任何种类的集合类都有效,而不只是数组):
- 枚举集合类
//包括上限使用to
for(i <- 1 to 4)
println("Iteration "+i)
Iteration 1
Iteration 2
Iteration 3
Iteration 4
//不包括上限使用until
for(i <- 1 until 4)
println("Iteration "+i)
Iteration 1
Iteration 2
Iteration 3
- 过滤(有时你并不想枚举集合的全部元素,而只是想过滤出某个子集,通过在for表达式的括号添加过滤器(filter),即if子句实现)
val filesHere=(new java.io.File(".")).listFiles
for(file <- filesHere if(file.getName.endsWith(".scala")))
println(file)
- 制造新集合(可以创建一个值去记住每一次的迭代,只要在for表达式之前加上关键字yield)
//对于for-yield表达式的语法如下
for {子句} yield {循环体}
//示例
匹配(match)表达式(Scala的match表达式类似于其他语言中的switch语句,它可以提供给你在多个备选项中做选择,基本上match表达式可以让你使用任意的模式做选择,不使用break和continue)
/**
* 斐波拉契算法
* @param in
* @return
*/
def fibonacci(in: Any): Int=in match {
case 0 =>0
case 1 =>1
case n: Int if(n>1) => fibonacci(n-1)+fibonacci(n-2)
case n: String => fibonacci(n.toInt)
case _ => 0
}
----EOF-----