1.lazyhtml
惰性計算java
惰性 求值 特別用於 函數式編程語言 中。在使用延遲求值的時候,表達式不在它被綁定到變量以後就當即求值,而是在該值被取用的時候求值 。 除能夠獲得性能的提高外,惰性計算的最重要的好處是它能夠構造一個無限的數據類型。shell
Scala中經過lazy關鍵字來定義惰性變量,惰性變量只能是不可變變量。例以下面,只有在調用惰性變量b的toString方法的時候,纔會去實例化b這個變量。能夠看到「Test」是先打印出來的。編程
class Book(name:String){maven
println("new book"+name)編程語言
override def toString() = "《"+name+"》"ide
}函數式編程
lazy val b = new Book("Java")函數
println("Test")工具
println(b.toString)
參考:Scala的函數式編程
2.「_」表明任意值。
3.tuple元組
在scala shell中,能夠使用tab鍵進行提示。
建立元組的方式
var tuple1 = Tuple1("localhost", 8888);
var tuple1 = Tuple2("localhost", 8888);
.
var tuple1 = Tuple22("localhost", 8888);
var tuple1 = ("localhost", 8888);
var tuple1 = "localhost" -> 8888;
訪問元組的方式
一個基於1的元素索引訪問它,下標是從1開始的以下
tuple1_1:localhost
tuple1_2:8888
4. def max(x:Int, y:Int):Int = {……}
在scala中,scala編譯器是沒法推斷函數的參數類型的,因此必須顯示的註明函數的參數類型。
5.若是scala命令行沒法回刪,更改終端爲Linux,在工具使用下面有博文http://my.oschina.net/cjun/blog/610402
6.scala命令行若是想換行,必須的是一個完整的語句再進行換行,不然會報錯。
7.case object AAA {}至關於java的java bean,不用設置set和get方法,scala會自動幫咱們加上set和get方法。
8.在命令行使用scala的時候:scala xxx.jar,後面加類路徑(scala xxx.jar com.bigdata.xxx)是沒用的,因此須要在插件maven-assembly-plugin裏面指定mainClass屬性,來設置主類,若是不設置,就會提示java.lang.NullPointerException
9.傳入函數的參數都是不可變的,是val類型的。參考:Scala基本語法和概念