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-----

Categories: scala Tags: scala