-1

私はライブで、職場でScalaを機能的に実行している、ケースクラスを使用している、タイプを別のタイプに変換している、どこでも不変性であるなどの話をしました。

これは実際にどのように機能しますか?純粋な機能的アプローチを備えたシンプルなHelloWorldアプリケーションが見たいです。

varまた、必要な場合もあるので、どうすれば完全に取り除くことができるのかわかりません。

4

2 に答える 2

5

それについてのCourseraのコースがあります。

于 2012-10-26T19:05:51.497 に答える
1

「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"))
于 2012-10-26T19:01:42.363 に答える