scala 函式總結

2021-09-25 04:42:56 字數 2409 閱讀 3712

字面量

字面量:直接在源**裡書寫的『值』,例如:

變數

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...