私はライブで、職場でScalaを機能的に実行している、ケースクラスを使用している、タイプを別のタイプに変換している、どこでも不変性であるなどの話をしました。
これは実際にどのように機能しますか?純粋な機能的アプローチを備えたシンプルなHelloWorldアプリケーションが見たいです。
var
また、必要な場合もあるので、どうすれば完全に取り除くことができるのかわかりません。
私はライブで、職場でScalaを機能的に実行している、ケースクラスを使用している、タイプを別のタイプに変換している、どこでも不変性であるなどの話をしました。
これは実際にどのように機能しますか?純粋な機能的アプローチを備えたシンプルなHelloWorldアプリケーションが見たいです。
var
また、必要な場合もあるので、どうすれば完全に取り除くことができるのかわかりません。
それについてのCourseraのコースがあります。
「Hello world」は、機能的なものがないため、機能的なアプローチを示すのにはあまり適していません。(実際、@delnan が指摘したように、標準出力への書き込みは副作用と見なされるため、このプログラムを純粋に機能させることはできません。)
あなたが必要とする最も可能性の高い理由var
は、実際には機能的なアプローチではない命令型スタイルのループを使用することです。機能的に同等なのは、コレクションで利用可能なフィルター/変換関数の一部を使用するか、再帰を使用することです。
簡単な例: 'F' で始まるリスト内のすべての文字列を検索します。命令型 (Java):
List<String> result = new ArrayList<String>();
for (String s : strings) {
if (s.startsWith("F")
result.add(s);
}
古いスタイルの反復子ループでは、命令性がさらに顕著になります。
対照的に、機能的なスタイルは次のようになります。
val result = strings.filter(_.startsWith("F"))