2016-11-21 11 views
2

したがって、私は関数型プログラミングには新しく、基本的な原則を消化しようとしています。これまでのところ、可変変数割り当てなしで理想的にコードする必要があることを理解できます。ループおよびその他の必須制御構造。だから私は質問があります。機能プログラミングの原則

def enrich(xRDD: RDD[xObject], yRDD: RDD[yObject], zRDD: RDD[zObject]): RDD[Result] = { 

    val temp = functionA(xRDD, yRDD) 
    functionB(temp, zRDD) 
} 

、もう1つは私が、なぜ選ぶ必要があり

def enrich(xRDD: RDD[xObject], yRDD: RDD[yObject], zRDD: RDD[zObject]): RDD[Result] = { 
    functionB(functionA(xRDD, yRDD), zRDD) 
} 

:以下の2つのコードのsnipetsの間に?一時的なvalにローカルにデータを割り当てるのを避けるので、私の推測は2番目です。これはすべてそれにありますか?私はそれを正しく得たか?何か不足していますか?

+0

結果はメモリに保存されますが、それは単なる可読性の問題です。あなたが 'val temp 'の良い名前を考えることができれば、最初の選択肢がより良いです。 – ipoteka

答えて

4

どちらの方法も良いですがどちらにするかは用途によって異なります。

どちらの方法も間違っていません。上記の方法のいずれかを使用することができます。しかし、あなたがfunctionAによって返された値を使用していないので、functionBを除くどこでも。 2番目の方法は良いように見えます(余分な変数はありません)。余分な変数が

(参照によって消費されるメモリは、実用的な目的のために重要ではない。)の懸念の少ない誤解ある

割り当ては、関数型プログラミングではOKです。再割り当てはOKではありません。 変数を使用して結果をキャプチャすることは、関数型プログラミングでは問題ありません。 varを使用してvarを再割り当てすることは関数型プログラミングではありません。

関連する問題