Scala中的if表达式

Scalaif表达式的定义:Scala中的if表达式与JAVA类似,通过在关键字后小括号中编写表达式来实现,结果是ifelse中返回的值。例如:

def choose(i:Int): Unit = {

  if(i > 0) {

   println("Positive")

  }else if (i < 0) {

   println("Negative")

  }else {

   println("Zero")

  }

}

 

还可以将if表达式的结果直接赋予变量,例如:

val _result = if (i > 0) 1 else -1

 

也可以写成下面的形式,但上面的写法更简洁。

var _result = 0;

if(i > 0)

 _result = 1

else

 _result = 0

 

关于if表达式的类型推断

Scala会自动对if表达式赋予的变量类型进行推断,如分支中返回不同类型的值,则会取其公共父类型。例如:

if(i > 0)

  1

else

 "Unknown"

分支中ifelse的值分别是IntString两种类型,则表达式的值类型会定义为AnyAny代表StringInt的公共父类型。

 

如果if语句没有对应的else,则默认elseUnit类型(表达式可以认为是"()"),与JAVAvoidnull类似。例如:if(i > 0) 1,没有else从句,则解释器默认会构造成:if(i > 0) 1 else ()的形式。

 

Scala中的""终结符

JAVA显著的不同点在于,Scala不需要""作为终结符,其默认将一行作为单条执行语句。但如果一行中存在多条语句,,此时则必须使用""作为终结符来分割多个语句。

 

输入和输出

print:输出时不会添加换行符。

println:会添加换行符。

printf:可以用于格式化输出。例如:printf("IP is %s, Serial.No is %d.","10.112.129.77", 1001)

readLinedeprecated):从控制台读取输入,与JAVASystem.inScanner类似。

 

循环控制

Scala中的循环与JAVA类似,支持多种循环控制,语义要大致相同。先来看while do循环示例:

var count = 0

while(count < 10) {

 println(count)

 count += 1

} //可以发现其语法与JAVA类似

 

Scalafor循环与JAVA有较大差异,一般会使用while替代for循环,也可以使用简化的for循环。简化的for循环通过"<-"to关键字指向一个简单集合,例如:

var count = 10;

for(i <- 1 to count)

 println(i)

 

也可以使用until关键字:

for(i <- 1 until count)

 println(i) //此时最后一个元素10不会被打印

 

通过简化的for循环,也可以对字符串进行遍历,类似JAVA中的增强for循环:

for(c <- "Hello, World")print(c)

 

跳出循环语句

Scala中没有提供类似于JAVAbreak语句,但可以用boolean变量、returnbreak函数替代。见下方示例:

import scala.util.control.Breaks._

breakable {

   var n = 0

   for(c <- "Hello, World") {

       if(n == 5) break;

       print(c)

       n += 1

   }

}