1.scala语法

  1. 对象的apply方法
    (1)对象调用apply()方法,可省略成()
    (2)string对象的apply方法返回第n个字符

    "hello"(4)  //‘o’
    
  2. if语句的返回值
    java把语句和表达式看做2个东西,语句执行动作,表达式返回值。eg:if语句没有返回值。而scala中,大部分的语法结构都有返回值。
    (1)if..else..语法结构的返回值 = if/else后面跟随的表达式的值

    scala> val s = if(1>0) 1 else -1
    res0: Int = 1
    
  3. for
    (1)scala中没有for(初始值;条件;更新变量)结构的循环
    (2)如需这样的循环,2种选择:while / for(i <- 1 to n)

    scala> for(i <- 1 to 5) print(i+",")
    1,2,3,4,5,
    

(3)scala的for由3部分组成:生成器,守卫,循环体
生成器:变量 <- 表达式
守卫:if语句
循环体:循环的逻辑,如果循环体以yield开始,则for的返回值时一个集合

```scala
for(i <- 1 to 2; j <- 1 to 3)
print(i*j+",") //1,2,3,2,4,6,

//带守卫的for
for(i <- 1 to 2; j <- 1 to 3 if j!=2)
print(i*j+",") //1,3,2,6

//yield构建集合
for(i <- 1 to 10)
yield i % 3 //Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)
4. 函数 scala
//1.默认参数
def decorate(value:String,left:String="[",right:String="]"): String ={
left + value + right
}
decorate("haha") //[haha]

//2.可变参数
def sum(args:Int): Int ={
var sum=0
for(i <- args)
sum += i
sum
}
sum(1 to 5: _
) //15q
```
5. 懒值
(1)懒值在第一次被调用时初始化,如果没被使用过,则不去初始化
(2)每次访问懒值时,scala都会调用一个方法来以线程安全的方式检查该值是否被初始化

scala val words = scala.io.Source.fromFile("/home/lj/aaa.txt") //words被定义时赋值 def words2 = scala.io.Source.fromFile("/home/lj/aaa.txt") //每次使用words2时被调用 lazy val words3 = scala.io.Source.fromFile("/home/lj/aaa.txt") //懒值在首次使用时初始化
6. 异常处理
scala没有受检异常---不需要声明函数或方法抛出某种异常。try代码快返回Nothing类型

scala var in = new URL("http://www.baidu.com").openStream() try{ //TODO }finally { in.close() }

posted @ 2016-04-21 16:59  lj72808up  阅读(169)  评论(0)    收藏  举报