函式和閉包
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...