Scala学习一:基础

Scala 学习一:基础


  • Scala 解释器具有补全功能

  • Scala 中不需要给出值或变量的类型,类型会从给出的初始表达式推断出来

  • Scala 在一条语句后不需要使用分号,仅当周一行代码中存在多条- 语句时才需要使用分号

  • Scala 中 byte, char, short, int, long, float, double 7种基本类型是类,所以可以直接调用方法.

  • Scala 中的字符串是用JavaString 实现的, Scala提供了更多的便捷方法

  • Scala 中使用方法,而不是强制类型转换,来现实数值之间的转换

  • Scala 中的 一般 操作符和Java中的作用是一样的,不同的是他们是方法 a + b 等价于 a.+(b)。但是 Scala 中没有 ++, – 操作符

  • Scala 中使用 “Scala.” 开头的包名时, 可以省去Scala.

  • Scala 中导入包中所有类的语句是

import aa.bb._      //导入某个包下所有类
import aa.bb.{A,B}  //导入包下多个类
Java是
import aa.bb.*;     //注意:分号是不能少的
import aa.bb.A;
import aa.bb.B;
  • Scala 中没有静态方法,但是有单例对象. Java中有静态方法 static

  • Scala 调用apply方法不需要显式声名, 可以理解为将apply方法当作是 “()” 操作符的重载.

"Hello"(4) //结果为 "o" 就等于 "Hello".apply(4)
val list = List(1,2) //就是调用了 List.apply[A](xs:A*) 方法
  • 在Java中为了区分逻辑结构 或 功能可以用 {} 包住一系列Java语句. 而Scala{}块包含一系列表达式, 其结果也是一个表达式. 块语句最后一句表达式的值就是该块的值。这个特性对于某个val初始化需要多步完成的情况很有用.

  • Scala中的赋值语句返回值是Unit 即 (),为了避免出错,不要使用:

x = y = 1
// 语句可以正常运行,但没有意义.
var a = ()
var b = 0
a = b = 1
println(a)
println(b)
  • 懒值
    当val被声明为lazy时,初始化就会推迟, 值到首次对它取值。
println("------- lazy val [result]")
lazy val words = scala.io.Source.fromFile("/Users/xxxx/words.txt").mkString
// println(" words = " + words) ## 注释掉此句,words.txt 不存在,也不会报错

为了方便证明,把文件路径写错,不访问words,不出错,直到首次访问words。

懒值并不是没有开销,每次访问懒值,都会有一个方法被调用,这个方法会以线程安全的形式检查该值是否被初始化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章