参照透明性
- 同じへの入力は、常に同じ出力を得ます。
F(X)及びパラメータxの関数は、基準透明体である場合、関数fは、純粋な関数です。
参照透明性の例に違反
我々は明らかに同じ入力、2回目の呼び出しのためにそれを見ることができますappend()
し、最初の呼び出しappend()
の出力が異なる場合。純粋関数(純粋に性的機能)
手段がないという副作用機能の
副作用
これは、状態の変化を意味します:- グローバル変数を変更します。
- 例外を投げます
- IOの読み取りと書き込み
副作用の呼び出し機能
副作用の例
var x = 1
def xpulsy_v1(y: Int) = x + y
def xpulsy_v2(y: Int) = {x += y; x}
x
xpulsy_v1(2)
x
xpulsy_v2(2)
x
我々は明らかに呼び出す見ることができxplusy_v2
、時間関数をxの値を変更し、副作用が生じ。
関数型プログラミングの利点
- 高い生産効率
- 推論のしやすさ
並列プログラミング
変数に割り当てられている機能
Scalaの構文は、変数に割り当てられた機能は、関数の後に追加しなければならないときに、指定のスペースとアンダースコア
def sayHello(name: String) { println("Hello, " + name) }
。。。