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