Scala-Objectオブジェクト、Applyメソッド、高次関数

対象

オブジェクトのコンテンツは静的です

クラス名と同じ場合、コンパニオンオブジェクトになります。

Scalaには静的キーワードはありません

アプリを継承し、メインメソッドを省略できます

適用方法

Applyメソッドはオブジェクトでのみ作成できます

class Student(var name : String)

object Student {
	def apply(name : String) = {
		println("调用了apply方法")
		new Student(name)
	}
	
	def main(args : Array[String]) : Unit = {
		var student = Student("Freedom")
		println(student.name)
	}
}

高次関数

(1)地図

ループに相当し、コレクションの各要素を操作し(関数を受け取り)、新しいコレクションを返します

var list = List(1,2,3)
list.map((i : Int) => i * 2)
list.map(_*2)

(2)foreach

foreachには戻り値がありません

(3)フィルター

フィルター、一致するデータを選択、パラメーターにはブール値を返す関数が必要、trueであるすべてのデータをフィルターで除外

var list = List(1,2,3)
list.filter((i : Int) => i % 2 == 0)
list.filter(_%2 == 0)

(4)zip

2つのセットをマージ

List(1,2,3,).zip(List(4,5,6))
List(1,2,3).zip(List(4,5))

(5)パーティション

アサーションの結果に基づいたパーティション(つまり、特定の条件、無名関数)

var list = List(1,2,3)
list.partition((i : Int) => i % 2 == 0)
list.partition(_%2 == 0)

(6)検索

条件を満たす最初の要素を見つける

var list = List(1,2,3)
list.find((i : Int) => i % 2 == 0)
list.find(_%2 == 0)

(7)平らにする

条件を満たす最初の要素を見つける

List(List(1,2,3),List(4,5,6)).flatten

(8)フラットマップ

地図と同等+平坦化

var list = List(List(1,2,3),List(4,5,6))
list.flatmap(i => i.map(_*2))

クロージャー(関数のネスト)

関数では、別の関数の定義を含み、内部関数で外部関数の変数にアクセスできます

def out(factor: Double) = {
	(x : Double) => x * factor
}
var triple = out(3)
triple(10)
out(3)(10)

カレー

複数のパラメーターを持つ関数を関数チェーンに変換します。各ノードは単一の関数です

def add(x: Int,y : Int) = x + y   //原始
def add(x : Int) = (y : Int) => x + y  //闭包
def add(x : Int)(y : Int) = x + y
  
131件の元の記事を公開 12 件を獲得 60,000回の閲覧+

おすすめ

転載: blog.csdn.net/JavaDestiny/article/details/92750569