scala快速上手 三 Scala 方法與函式

2021-10-24 23:42:58 字數 2354 閱讀 1900

def fun (a: int , b: int ) : unit = 

fun(1,1)

def fun1 (a : int , b : int)= a+b

println(fun1(1,2))

注意點:

/**

* 遞迴方法

* 5 的階乘

*/def fun2(num :int) :int=

print(fun2(5))

/**

* 包含預設引數值的函式

* 注意:

* 1.預設值的函式中,如果傳入的引數個數與函式定義相同,則傳入的數值會覆蓋預設值

* 2.如果不想覆蓋預設值,傳入的引數個數小於定義的函式的引數,則需要指定引數名稱

*/def fun3(a :int = 10,b:int) =

fun3(b=2)

/**

* 可變引數個數的函式

* 注意:多個引數逗號分開

*/def fun4(elements :int*)=

sum}println(fun4(1,2,3,4))

/**

* 匿名函式

* 1.有引數匿名函式

* 2.無引數匿名函式

* 3.有返回值的匿名函式

* 注意:

* 可以將匿名函式返回給定義的乙個變數

*///有引數匿名函式

val value1 = (a : int) =>

value1(1)

//無引數匿名函式

val value2 = ()=>

value2()

//有返回值的匿名函式

val value3 = (a:int,b:int) =>

println(value3(4,4))

/**

* 巢狀方法

* 例如:巢狀方法求 5 的階乘

*/def fun5(num:int)=else

} fun6(num,1)

}println(fun5(5))

偏應用函式是一種表示式,不需要提供函式需要的所有引數,只需要提供部分,或不提供所需引數。

/**

* 偏應用函式

*/def log(date :date, s :string)=

val date = new date()

log(date ,"log1")

log(date ,"log2")

log(date ,"log3")

//想要呼叫 log,以上變化的是第二個引數,可以用偏應用函式處理,這裡_需要指定型別。

val logwithdate = log(date,_:string)

logwithdate("log11")

logwithdate("log22")

logwithdate("log33")

函式的引數是函式,或者函式的返回型別是函式,或者函式的引數和函式的返回型別是函式的函式。

/**

* 高階函式

* 函式的引數是函式 或者函式的返回是函式 或者函式的引數和返回都是函式

*///函式的引數是函式

def hightfun(f : (int,int) =>int, a:int ) : int =

def f(v1 :int,v2: int):int =

println(hightfun(f, 1))

//函式的返回是函式

//1,2,3,4 相加

def hightfun2(a : int,b:int) : (int,int)=>int =

f2}println(hightfun2(1,2)(3,4))

//函式的引數是函式,函式的返回是函式

def hightfun3(f : (int ,int) => int) : (int,int) => int =

println(hightfun3(f)(100,200))

println(hightfun3((a,b) =>)(200,200))

//以上這句話還可以寫成這樣

//如果函式的引數在方法體中只使用了一次 那麼可以寫成_表示

println(hightfun3(_+_)(200,200))

/**

* 柯里化函式

*/def fun7(a :int,b:int)(c:int,d:int) =

println(fun7(1,2)(3,4))

scala快速上手 二 Scala 基礎

定義變數和常量 變數 用 var 定義 可修改 常量 用 val 定義,不可修改 var name zhangsan println name name lisi println name val gender m gender m 錯誤,不能給常量再賦值 class person object l...

Scala 說說快速排序

簡短的幾行 就完成了快速排序 def qsort list int list int 這幾行 很美,美不勝收。我喜歡把這種風格裡定義的sqort叫做物件,函式物件 它的型別是list int list int 這是個函式型別,接受乙個list int 引數,返回乙個list int 結果 模式匹配的...

Scala基礎語法三

1.方法的定義與呼叫 1 方法的定義與呼叫 def 方法名 引數 引數型別,方法返回值型別 當然上邊的方法定義的方式中有許多是可以省略的,例如 省略方法的返回值型別 注意 方法的返回值型別可以不寫,編譯器可以自動推斷出來,但是對於遞迴函式,必須指定返回 省略傳入方法中的引數 注意 如上圖中的例子所示...