@songlaf
2016-07-18T16:51:25.000000Z
字数 1553
阅读 741
scala
package song.study.scalaobject Caculator{def Add(x:Int,y:Int):Int = {x + y}}object FirstApp {def main(args:Array[String]):Unit = {try{var half = -1;var c = if (half >0) 2 else throw new RuntimeException("half <0")println(c)}catch{case e:Exception => println("The Excetion is " + e.printStackTrace());}println(Caculator.Add(1, 2))}def doWhile(){var line = ""do{line = readLine()println("Read:" + line)}while(line != "")}}
package song.study.scalaobject Caculator{def Add(x:Int,y:Int):Int = {x + y}}object FirstApp {def main(args:Array[String]):Unit = {//Tuplevar pair = (100,"a","b","c")println(pair._1);//Arrayvar array = Array(1,2,3,4,5)for(i<-0 until array.length){println(array(i));}for(elment <- array){println(elment)}//mapvar countrys = Map("China"->142,"USA"->150)for((k,v) <- countrys){println("Key:" + k + ",Value:" + v)}for((k,_) <- countrys){println("Key:" + k + ",Value:" + countrys(k))}countrys.keys.foreach { k =>println("Key:" + k + ",Value:" + countrys(k))}}}
for(i <- 1 to 5;j <- 1 to 5 if i !=j){println("-----------------")println("I:" + i)println("I:" + j)println("-----------------")}
def addA(x:Int) = x + 100 //普通方法方法可以自动判断类型,但是如果用在递归的时候必须指明返回值def addA(x:Int):Int = if(x <=0) 1 else x * addA(x-1) //用了递归所以必须增加返回值def combine(x:Int,y:Int = 1,z:Int=3) = x + y + z //默认参数值val add = (x:Int) => x + 200 //匿名方法def connected(args:Int*)={ //可变参数var result = 0for(arg <- args) result += argresult}println(addA(1))println(add(2))
Scala有两种变量,val和var。val就不能再赋值了。与之对应的,var可以在它生命周期中被多次赋值。
lazy延迟加载,file增加了lazy,那么延迟到使用的时候再去实例.
其实test1这个文件并不存在,但是代码执行没错,因为加了lazy所以代码并未执行.
如果去掉lazy那么执行就会报错
lazy val file = Source.fromFile("E:\text1.txt")