@songlaf
2016-07-18T16:51:25.000000Z
字数 1553
阅读 583
scala
package song.study.scala
object 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.scala
object Caculator{
def Add(x:Int,y:Int):Int = {
x + y
}
}
object FirstApp {
def main(args:Array[String]):Unit = {
//Tuple
var pair = (100,"a","b","c")
println(pair._1);
//Array
var array = Array(1,2,3,4,5)
for(i<-0 until array.length){
println(array(i));
}
for(elment <- array){
println(elment)
}
//map
var 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 = 0
for(arg <- args) result += arg
result
}
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")