For循环
package kmust.hjr.learningScala04
/**
* Created by Administrator on 2015/7/13.
*/
object For_Function_Advanced {
def main(args:Array[String]):Unit={
for(i <- 1 to 2;j <- 1 to 2) print((100*i+j)+" ")
println
}
注:i 和 j 的数据类型不需要声明,Scala会根据” <- “箭头右侧集合当中元素的数据类型自动进行类型推倒
for(i <- 1 to 2;j <- 1 to 2 if i != j) print((100*i+j)+" ")
println()
注:含有条件表达式的for循环
Function(函数是有值的)-Scala
函数与匿名函数
def addA(x:Int)=x+100
val add=(x:Int)=> x+200//匿名函数
println("The result from a function is :"+addA(2))
println("The result from a val is:"+add(2))
注:一般不用声明函数的返回类型
注:递归运算的时候必须声明函数的返回类型,如下例子:
def fac(n:Int):**Int**=if(n<=0)1 else n*fac(n-1)
println("The result from a fac is:"+fac(10))
可以设置函数的默认参数,也可以覆盖默认的函数参数
def combine(content:String,left:String=" [ ",right:String=" ] ")=left+content+right
println("The result from a combine is:"+combine("I Love Spark"))
println("The result from a combine is:"+combine("I Love Spark"," ## "," ## "))
函数的参数是可变的,如下例子:
def connected(args:Int*)={
var result=0
for(arg <- args)result+=arg
result
}
println("The result from a connected is :"+connected(1,2,3,4,5))
println("The result from a connected is :"+connected(10,11,12,13,14,15,16,17,18,19,20))
Lazy级别:第一次被使用时才实例化
package kmust.hjr.learningScala04
import scala.io.Source
/**
* Created by Administrator on 2015/7/13.
*/
object LazyOps {
def main(args:Array[String]):Unit={
//val file=Source.fromFile("E:\\yizheyouyeLazy.txt")
lazy val file=Source.fromFile("E:\\yizheyouyeLazy.txt")
//for(line <- file.getLines)println(line)
println("I Love Spark")
}
}
附:完整代码
package kmust.hjr.learningScala04
/**
* Created by Administrator on 2015/7/13.
*/
object For_Function_Advanced {
def main(args:Array[String]):Unit={
for(i <- 1 to 2;j <- 1 to 2) print((100*i+j)+" ")
println
def addA(x:Int)=x+100
val add=(x:Int)=> x+200
println("The result from a function is :"+addA(2))
println("The result from a val is:"+add(2))
def fac(n:Int):Int=if(n<=0)1 else n*fac(n-1)
println("The result from a fac is:"+fac(10))
def combine(content:String,left:String=" [ ",right:String=" ] ")=left+content+right
println("The result from a combine is:"+combine("I Love Spark"))
println("The result from a combine is:"+combine("I Love Spark"," ## "," ## "))
def connected(args:Int*)={
var result=0
for(arg <- args)result+=arg
result
}
println("The result from a connected is :"+connected(1,2,3,4,5))
println("The result from a connected is :"+connected(10,11,12,13,14,15,16,17,18,19,20))
}
}