Scala中的if表达式
Scala中if表达式的定义:Scala中的if表达式与JAVA类似,通过在关键字后小括号中编写表达式来实现,结果是if或else中返回的值。例如:
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"
分支中if和else的值分别是Int与String两种类型,则表达式的值类型会定义为Any,Any代表String和Int的公共父类型。
如果if语句没有对应的else,则默认else为Unit类型(表达式可以认为是"()"),与JAVA中void或null类似。例如: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)。
readLine(deprecated):从控制台读取输入,与JAVA中System.in和Scanner类似。
循环控制
Scala中的循环与JAVA类似,支持多种循环控制,语义要大致相同。先来看while do循环示例:
var count = 0
while(count < 10) {
println(count)
count += 1
} //可以发现其语法与JAVA类似
Scala中for循环与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中没有提供类似于JAVA的break语句,但可以用boolean变量、return或break函数替代。见下方示例:
import scala.util.control.Breaks._
breakable {
var n = 0
for(c <- "Hello, World") {
if(n == 5) break;
print(c)
n += 1
}
}