私はJava 8を初めて使用しています。私はConsumer java docに出会いました。「コンシューマーは副作用によって動作することが期待されています。誰かがなぜそう言われたのか説明してもらえますか?Java 8コンシューマーと副作用
答えて
Consumer
javadocによれば、消費者は、署名がvoid accept(T)
であると宣言されなければならない。その結果、メソッドは値を返すことができません。それが副作用を持たないなら、それはどんな影響をも実行する能力を持たないでしょう。厳密に彼らは、入力を受け入れるいくつかの計算を行い、出力を返す意味機能インターフェース、 -
ありがとうございます。私はあなたの意見を持っています。 – user6348242
ほとんどの機能インタフェースは、まさにそれであることを意味しています。彼らはどんな状態も修正するつもりはない。 Consumer
は値を返さないため例外です。その目的はある状態を変更することだけです。
消費者は次のシグネチャ
void accept(T t);
方法は、入力としてトンを取り、何も(ボイド)返さない、ので、あなたはそれから何かを返すと方法を置き換えることはできませんと方法accept
を持っていますそれが返す値で呼び出します。
副作用でしょうprint文の例、
list.stream.foreach(System.out::println);
foreachのは、引数として消費者を取ります。あなたがそれについて考えるならば、あなたがそのような方法で行うことができる唯一の有用なことは、世界を変えることです(すなわち、状態を変える)。
pure function、任意の状態を変化させません機能は、それが任意の副作用はありません。たとえば、ここで
Function<Integer,Integer> fn = x -> x*x;
fn
ため、入力を受け取り、何かを返すだろうとの反対(それは何かを変異させない)、それは整数を受け取り、静かにその正方形を返す。
- 1. Javaストリームの副作用API
- 2. Javaメソッドの副作用
- 3. Angular2:プロパティバインディングと副作用
- 4. 置換+副作用
- 5. 副作用)
- 6. GCCインラインアセンブリ副作用
- 7. LD_LIBRARY_PATHの副作用
- 8. モカの副作用
- 9. MVC副作用は
- 10. 副作用のゲッター
- 11. JavaとMySQL - データベースの変更(トリガー、プロデューサー/コンシューマー?)
- 12. 避け副作用ときジャスミン
- 13. multi_schemaと副作用の問題
- 14. React Reduxと副作用の説明
- 15. HotSpot JIT、デッドコードの除去と副作用?
- 16. OCamlの副作用とトップレベルの表現
- 17. Android(Java)プロデューサー/コンシューマー(タイマー付)
- 18. Reduxレデューサーの副作用
- 19. ELM:副作用管理
- 20. Functional Programmingの副作用
- 21. redux-form getFormState副作用
- 22. C++マクロの副作用
- 23. のMongoDB:MapReduceの副作用
- 24. Purescriptハロゲン、副作用(乱数)
- 25. REBOLのシフトタブの副作用
- 26. Go言語の副作用
- 27. 次のJavaコードには副作用がありますか?
- 28. プロデューサーとコンシューマー、Cのsempahoreで作業
- 29. Pythonの副作用を適用する
- 30. 副作用とは何か?なぜメモリ割り当てが副作用ではないのですか?
関数型プログラミングに慣れていない場合、その言語はあまり意味がありません。考えられるのは、 "純粋な"関数は入力からのみ読み込み、戻り値に書き込むべきであるということです(副作用はありません - 関数を実行する唯一の効果は戻り値を得ることです)。何か(データ構造の変更、IOの実行など)は、副作用があると言われています。戻り値のない関数は、副作用がある方が良い、そうでなければ何もしていない。 –