Scala函式注意事項和細節討論

2021-10-11 02:50:38 字數 2650 閱讀 2486

函式的形參列表可以是多個,如果函式沒有形參,呼叫時可以不帶()

形參列表和返回值列表的資料型別可以是值型別和引用型別

object details01 

def test01(n1:int,tiger:tiger): tiger =

}class tiger

scala中的函式可以根據函式體最後一行**自行推斷函式返回值型別。那麼在這種情況下,return關鍵字可以省略

def getsum (n1: int, n2: int): int =
因為scala可以自行推斷,所以在省略return關鍵字的場合,返回值型別也可以省略

def getsum (n1: int, n2: int) =
如果函式明確使用 return 關鍵字,那麼函式返回就不能使用自行推斷了,這時要明確寫成:返回型別=,當然如果你什麼都不寫,即使有return返回值為()
object details02 

//如果寫了return ,返回值型別就不能省略

def getsum(n1: int, n2: int): int =

//如果返回值這裡什麼什麼都沒有寫,即表示該函式沒有返回值

//這時return無效

def getsum2(n1: int, n2: int)

//如果函式明確宣告無返回值(宣告unit),那麼函式體中即使使用return關鍵字也不會有返回值

def getsum3(n1: int, n2: int): unit =

}

如果函式明確宣告無返回值(宣告unit),那麼函式體中即使使用return關鍵字也不會有返回值

//如果函式明確宣告無返回值(宣告unit),那麼函式體中即使使用 return 關鍵字也不會有返回值

def getsum3(n1: int, n2: int): unit =

如果明確函式無返回值或不確定返回值型別,那麼返回值型別可以省略(或宣告為any)

scala語法中任何的語法結構都可以巢狀其他語法結構(靈活),即:函式中可以再宣告/定義函式,類中可以再宣告類,方法中可以再宣告/定義方法

object details03 

println("ok~~")

def sayok(): unit =

}} def sayok(): unit =

}

scala函式的形參,在宣告引數時,直接賦初始值(預設值),這時呼叫函式時,如果沒有指定實參,則會使用預設值。如果指定了實參,則實參會覆蓋預設值。

object details04 

//name形參的預設值jack

def sayok(name : string = "jack"): string =

}

如果函式存在多個引數,每乙個引數都可以設定預設值,那麼這個時候,傳遞的引數到底是覆蓋預設值,還是賦值給沒有預設值的引數,就不確定了(預設按照宣告順序[從左到右])。在這種情況下,可以採用帶名引數。

object detailparameter05 

def mysqlcon(add:string = "localhost",port : int = 3306,

user: string = "root", pwd : string = "root"): unit =

def f6 ( p1 : string = "v1", p2 : string )

}

遞迴函式未執行之前是無法推斷出來結果型別,在使用時必須有明確的返回值型別

def f8(n: int) =
scala函式支援可變引數

基本語法

//支援о到多個引數

def sum(args: int*): int = {}

//支援1到多個引數

def sum(n1: int, args: int*): int = {}

使用的注意事項

應用案例:

object varparameters 

def sum(n1: int, args: int*): int =

sum} //可變引數需要放在最後

// def sum2(args: int*,n1: int): int =

def test(): unit =

}

將函式的返回型別為unit的函式稱之為過程(procedure),如果明確函式沒有返回值,那麼等號可以省略

// f10沒有返回值,可以使用unit來說明

// 這時,這個函式我們也叫過程(procedure)

def f10(name: string): unit =

scalal 函式注意事項和細節討論

函式的形參列表可以是多個,如果函式沒有形參,呼叫時可以不帶 package com.xcu.chapter06.homework object demo01 class dog 輸出結果 狗正在吃骨頭!形參列表和返回值列表的資料型別可以是值型別和引用型別object demo01 def creat...

scala型別匹配注意事項

1 map string,int 和map int,string 是兩種不同的型別,其他的類推,list int list string 其他類推 2 在進行型別匹配時,編譯器會預先檢測是否有可能的匹配,如果沒有則報錯 object matchfordemo 說明 只遍歷出value 0 的key ...

go 函式使用時的注意事項和細節

函式的心餐列表可以時多個,返回值列表也可以是多個 形參列表和返回值列表的資料型別可以是值型別和引用型別 函式的命名遵循識別符號命名規範,首字母不能是數字,首字母大寫該函式可以被本包檔案和其他包檔案使用,首字母小寫,將只能被本包檔案使用,其他包檔案不能使用 函式中的變數是區域性的,函式外不生效 基本資...