scala学习笔记,第一章

  scala伴生对象

    scala没有静态方法,不过有个类似的特性叫做 单例对象。通常一个类对应有一个伴生对象,其方法跟java中的静态方法一样。 

scala apply方法

    scala中有类似函数调用的方法。举例来说,如果s是一个字符串,那么s(i)就是该字符的第i个字符。例如
     "Hello"(4) //将输出 o
    你可以把这种方法理解为() 方法的重载形式,它背后的实现原理是一个名为 apply的方法。举例来说,在StringOps文档中有这样一个说明 
     def apply (n : Int) : Char
    也就是说 "Hello"(4) 是 "Hello".apply(4)的简写。像这样使用伴生对象的apply方法是scala中构建对象的重要方法,比如
 Array(1 ,4 , 9)返回一个数组,就是用Array的伴生对象的apply方法

scala中每个表达式都有一个类型。

   举例来说,表达式 if (x>1) 1 else -1的类型是Int。因为两个分支的类型都是Int,比如
       if (x>0) "Positive"  else -1
上面的表达式的类型是两个分支类型的公共超类型。本实例中一个分支是java.lang.String,一个是Int,他们的公共超类是Any。 如果else 部分缺失了,比如  if (x>0) 1,那么if语句可能没有输出值。但是在scala中,每个表达式都有某种值。这个问题的解决方案是引入一个Unit类,写作()。不带else的if语句等同于
      if (x>0) 1 else ()
Unit可以当做java中的 void。

块语句和表达式

   scala中{} 包含一系列表达式,其结果也是一个表达式。块中最后一个表达式的值就是块表达式的值

scala 高级for循环

    你可以使用 变量<-表达式  的形式提供多个生成器,用分号将他们分开。例如
        
for(i <- 0 to 3;j <-1 to 3)    print((10*i+i)+" ")   //将打印  11 12 13  21 22 23 31 32 33

    每个生成器都可以带一个守卫,以if开头的 Boolean 表达式
       
 for(i< -1 to 3; j <- 1 to 3 if i!=j)  print((10*i+j)+"   ")   //将打印 12 13 21 23 31 32

    可以使用任意多的定义,引入可以在循环中使用的变量:
        
for(i <- 1 to 3;from = 4-i;j <- from to 3)   print((10*i+j)+"  ") //将打印 13 22 23 31 32 33

    如果for循环的循环体以 yield开头,则循环会构造出一个集合,每次迭代生辰集合中的一个值
       
for(i<1 to 10)  yield i%3   //生成Vector(1,2,0,1,2,0,1,2,0,1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值