Scala基礎語法 函式的定義以及元祖

2021-10-24 23:53:13 字數 3784 閱讀 4157

方法:

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 所有引用類的基...