方法:
def 函式名([引數列表])[:返回型別]=
def main(args: array[
string])
:unit
= println(square(2)
)}
square是函式名;
x:int定義了引數的型別;
:int 是輸出結果型別即返回值型別
輸出結果為4
上述的方式我們還可以進行簡化:
def main(args: array[
string])
:unit
=
返回值型別可以不寫,直接定義後面的函式體。scala會根據函式體自動識別返回值型別。
定義函式方法二:
匿名函式
val 變數名=(引數列表)=>函式體
這一種定義方法和上述方法相比,我們並沒有直接定義乙個函式,而是只定義了乙個函式的方法,然後把這個方法賦予給乙個變數或者常量。這種方法稱為匿名函式。
val sum=
(x:int
,y:int
)=>x+y
println(sum(1,2))
可以看到輸出結果為3
定義不寫引數名的函式
val sum2:
(int
,int
)=>
int=
(_+_)
println(sum2(3,4))
這也是乙個匿名函式。我們用下劃線代指兩個傳入的值
函式作為引數列表
def fun(x:
int,y:
int)
:int
=x+y
def sum3(f:
(int
,int
)=>
int,s:
string):
string
= println(sum3(fun,
"abc"
))
首先定義乙個函式fun,在另一函式的引數列表中定義乙個函式的型別,
函式體中指定引數列表中函式的引數。
在最後呼叫的時候,我們可以呼叫我們定義的fun函式作為引數。
函式作為返回值
def sum4():
(int
,int
)=>
int=
demon
}println(sum4()(
2,3)
)
用函式作為返回值,需要內嵌乙個函式,用來定義返回值函式
傳入多個引數
當我我們建立乙個函式的時候,有時候不清楚到底需要傳多少個引數列表,此時,我們就可以採取以下方法解決。
def student(grade:
int,name:
string*)
= student(1,
"sam"
,"john"
,"sally"
,"..."
)
string*表示可以傳多個相同型別的引數,在函式體中通過for迴圈遍歷
元祖可以包含不同型別的元素,但最多支援22個元素(tuple~tuple22).
在訪問元祖時,我們可以使用下劃線"_「訪問元素,」_1"表示第乙個元素。
元祖的宣告方式一
var tup1=
("sam",20
,"math"
,90.5
) println(tup1._1)
println(tup1._2)
println(tup1._3)
println(tup1._4)
也可以通過遍歷的方式,把元祖的資料全部輸出
var tup1=
("sam",20
,"math"
,90.5
) tup1.productiterator.foreach(i=>println(i)
)
productiterator:是生成乙個迭代器
foreach:列印出元祖的每乙個資料
元祖的宣告方式二
注意這裡的tuple3指的是元祖的大小為3,即為3條資料,如果想插入4條就為tuple4,22為上限
var tup2=
new tuple3(
"mike",18
,86)tup2.productiterator.foreach(i=>println(i)
)
元祖宣告方式三
var tup3=
"john"
->
85 println(tup3)
從輸出結果來看,生成的是乙個二元元祖,那麼如果再加乙個 ->呢
生成的結果依然為乙個二元組,只是把乙個二元組當成了乙個元祖資料。這是因為在執行時,先執行的
「john」->85,二者生成乙個二元組,再執行->90,二者組合成乙個二元組
將元祖元素依次賦給變數
var
(name, age, score)
= tup2
println(name)
println(age)
println(score)
把tup2的元素依次傳給定義的變數
scala基礎語法 類定義
package org.xj.scala.spark 宣告類 乙個原始檔中可以包含很多類,並且scala都是public級別的 class basic2 定義乙個類 scala中的var val def val和def都會被編譯為乙個方法,區別是 val會被編譯器保證執行時其值不能改變,但def不同...
Scala 簡單的函式基礎定義
def main args array string unit 2 函式呼叫 函式名 引數 f hello world 定義位置不一樣 函式,定義在方法或者函式內部 方法,定義在類的下面方法支援過載或者重寫,但是函式不支援 object testfunction def main args arra...
scala基礎語法
一 變數定義 1 val 定義的變數值不可以修改 2 var 定義的變數值可以修改 二 一些變數型別 1 unit 表示不返回任何結果方法的結果型別,相當於void 2 null null 空引用 3 nothing 任何其他類的子型別 4 any 所有其他類的父類 5 anyref 所有引用類的基...