Scala中for常用实例
for(i <- 1 to 3; j <- 1 to 3)
print((1000*i + j) + "\t")
//结果为:1001 1002 1003 2001 2002 2003 3001 3002 3003
for(i <- 1 to 3; j <- 1 to 3 if i!= j) //"if i!= j"条件表达式可在此使用
print((1000*i + j) + "\t")
//结果为:1002 1003 2001 2003 3001 3002
Scala函数定义进阶
object For_Function_Advanced{
def main(args: Array[String]): Unit = {
def addA(x : Int) = x + 100 //自动推断函数返回值为Int
val add = (x : Int) => x + 200 //"(x : Int) => x + 200"匿名函数 直接作为值进行传递
println("addA()___result:" + addA(99)) //addA()___result:199
println("add___result:" + add(98)) //add___result:298
//递归实例
def fac(n: Int): Int = if(n <= 0) 1 else n * fac(n - 1)
println("fac(8): " + fac(8)) //fac(8): 40320
//函数参数设置默认值
def combine(mid : String, left : String = "[", right : String = "]") = left + mid + right
println("Result:" + combine("I am hungry")) //Result:[I am hungry]
println("Result:" + combine("I am hungry", "<<", ">>")) //Result:<<I am hungry>> 覆盖了默认参数值
//参数个数不固定的函数
def connected(args: Int*) = {
var result = 0
for(arg <- args)
result += arg
result
}
println("Result: " + connected(1, 2, 3, 4, 5)) //Result: 15
println("Result: " + connected(1, 2, 3, 4, 5, 6)) //Result: 21
}
}
Scala中的lazy val
Scala中通过lazy关键字来定义惰性变量,惰性变量只能是不可变变量。
只有在调用惰性变量方法的时候,才会去实例化这个变量。
lazy实例:
object LazyTest{
def main(args: Array[String]):Unit = {
lazy val file = Source.fromFile("C:\\xxx.txt") // lazy val 惰性变量
for(line <- file.getLines) //当要调用file->getLines时才真正定义file
println(line)
}
}