字面量
字面量:直接在源**裡書寫的『值』,例如:
變數
scala宣告乙個變數的基本語法:初始值可以是字面量或變數名val 變數名:變數型別 = 初始值
var 變數名:變數型別 = 初始值
scala中,函式成為了和普通的變數一樣的『頭等公民』,可以像其他任何資料型別的值一樣的被傳遞和操作。
函式的值也叫做函式的字面量。整數字面量就是乙個整數,類推即:函式字面量就是乙個函式。
# 可以在整數字面量中指出變數型別,同理可以在函式字面量中指出引數型別,即匿名函式
scala> val a = 10l
a: long = 10
scala> val a:long = 10
a: long = 10
scala> val a:int = 10l
^error: type mismatch;
found : long(10l)
required: int
類或者單例物件中的成員函式叫做方法,其定義的基本語法為:def 方法名(函式列表): 返回結果型別 =
函式既然作為『頭等公民』,也要有「型別」 和 「值」 的區分。
函式型別需要明確函式接受多少個引數,每個引數的型別以及函式返回結果的型別;值則是乙個函式的具體實現(變數列表=> 對映關係/運算語句)。例如:
宣告函式的語法和宣告變數語法相同:函式值的基本語法(當只有乙個引數時,可以省略圓括號(), 當對映關係(或叫做運算語句)只有一條語句時,可以省略大括號{}:val 函式名:函式型別 = 函式值
(引數列表)=>
scala>
val fun:
(int
,int
)=>
int=
(x, y)
=>
fun:
(int
,int
)=>
int= $$lambda$892
/1107130176
@35e50381
scala> fun(3,
4)res15:
int=
10
匿名函式
匿名函式(lambda表示式):給出了函式引數型別的函式字面量。
因為匿名函式中給出了函式的引數型別,並且scala有型別推斷系統,所以定義函式變數時如果函式字面量寫成匿名函式形式,便可以省略「函式型別」。
佔位符函式
如果函式的每個引數在函式對映/運算語句中僅出現一次,可以省略"=>"並用下劃線作為引數的佔位符來簡化函式字面量的表示,第乙個下劃線代表第乙個引數,第二個下劃線代表第二個引數,以此類推。例如:
# 函式的普通語法
scala> val add:(int, int)
=>int =
(x,y)
=>x+y
add: (int, int)
=> int = $$lambda
$893/1671201590@2d617d27
scala> add(2,3)
res16: int = 5
# 匿名函式語法
scala> val add =
(x:int,y:int)
=>x+y
add: (int, int)
=> int = $$lambda
$894/1578614193@231e72e1
scala> add(2,3)
res17: int = 5
# 佔位符語法
scala> val add:(int, int)
=>int = _ + _ # 看到形如 『_*2』 的表示式時,要知道是乙個函式字面量。
add: (int, int)
=> int = $$lambda
$901/102034667@551d933f
scala> add(2,3)
res19: int = 5
scala> val add =
(_:int) + (_:int)
#有型別時括號不能省略
add: (int, int)
=> int = $$lambda
$900/1593829543@2aeaa332
scala> add(2,3)
res18: int = 5
scala學習總結11(函式)
偏函式 val list 1 2,3 4,zhc val addone newpartialfunction any,int val list1 list.collect addone println list1 簡化形式1 def fun partialfunction any,int val l...
scala 主建構函式 Scala 建構函式
scala建構函式 類由類成員 如字段和方法 組成。字段儲存物件的狀態,並使用val或var定義。方法完成物件的計算任務,並使用定義關鍵字def。在scala中,類的整個主體是建構函式。如果建構函式採用零引數,則可以省略引數列表。scala區分用val欄位,var欄位,private val或pri...
scala資料總結
1 scala中文社群 2 scala標準庫 3 scala tour 非常有用,總結得很精闢 4 scala 學習筆記 5 scala 基礎學習篇 別人的學習筆記 6 scala 學習筆記 7 scala基礎語法 8 scala list講解 總結 關於scala,我是從一本書開始看的,快學sca...