scala學習筆記4

2021-08-27 22:22:28 字數 1486 閱讀 6953

函式和閉包

1.定義函式最通用的方法是作為某個物件的成員,這種函式被稱為方法。

2.函式式程式設計風格:程式應該被解構成若干小的函式,每塊實現乙個定義完備的任務,組裝成複雜的事物

3.區域性函式可以定義在另外乙個函式的內部,並且區域性函式可以訪問外部函式的屬性

4.=>指明函式左邊的東西轉化成右邊的東西

5.什麼叫閉包:

一直乙個函式f(x) = x + i ,讓你求f(3) = 3 + i。

分析:要得到最終的函式值,你必須知道i的值。i稱作開放項。

若上文中定義了 int i = 1 ,則可以得到f(3) = 3 + 1 = 4.

即函式值若想捕獲i的值,這一過程被理解為做對函式執行「關閉」操作,所以叫閉包

6.scala的函式是頭等函式

package com.scala.stu

import scala.io.source

/** * 函式和閉包

*/object t_007 代表**塊

println("this is one line")

x + 1

} println(increase(10))//變數可以通過這種形式進行重新賦值,因為任何函式值都是擴充套件了若干的function的

var somenumbers = list(-11,-10,-5,0,5,10)

//filter,這個方法選擇集合型別裡可以通過使用者提供的測試的元素

somenumbers = somenumbers.filter

//_是佔位符

somenumbers = somenumbers.filter

//foreach,每個集合類都能用的foreach方法,定義在特質iterable中他是list,set,array,map的共有的超特質

somenumbers.foreach

somenumbers.foreach

//_+_ 將擴充套件成帶兩個引數的函式字面量,多個下劃線代表多個引數

//只有在需要函式型別的地方,scala才允許你省略這個僅用的_

val f = (_: int) + (_: int)

println(f(1,2))

} //本地函式

def processfile(filename: string , width: int)

/** def processline(filename: string,width: int , line: string)

*/val source = source.fromfile(filename)

for (line <- source.getlines)//getlines返回列舉型別

processline(line)

} //柯里化

def curr(x: int)(y: int) = x+y

def first(x:int) = (y:int) =>x + y

}

Scala學習筆記

scala學習筆記 一.scala中集合的常用方法 首先定義兩個陣列集合,用於測試 scala val arr1 array 1,2,3,4 arr1 array int array 1,2,3,4 scala val arr2 array 3,4,5,6 arr2 array int array ...

Scala學習筆記

1 閉包 var a 3 var addfun x int x a var b addfun 10 println b addfun 就是個和物件無關的函式,區域性變數,使用方法和函式一樣,但是好像不推薦這種寫法。2 類的建立,簡單使用abstract class bparent 構造函式引數會自動...

Scala 學習筆記

object a val u fab 15,list 1,1 val f p int print p t 變長引數 def sum nums int int int def main args array string unit def f p int int print f 4 object ab...