📝

【Flutter】Flutterやdartで関数型プログラミング

2021/10/29に公開

dart/flutterのパッケージ

Flutterやdartで関数型プログラミングを使うためのパッケージにfpdartdartzがあります.

# pubspec.yaml
dependencies:
  fpdart: ^0.0.12 # Check out the latest version

のように追加すれば使えます.

関数型プログラミング

命令型プログラミングでは

void main() {
const List<int> list = [1, 2, 3, 4];
//  Imperative solution
int sumI = 0;
for (int i = 0; i < list.length; ++i) {
  sumI = sumI + list[i];
  print(sumI);
}
}

結果

1
3
6
10

関数型では

void main() {
const List<int> list = [1, 2, 3, 4];
  /// Functional solution
final sumF = list.fold<int>(0, (p, c) => p + c);
  print(sumF);
}

結果

10

list.foldが分からなかったので調べました
各要素を既存の値と繰り返し組み合わせることにより,単一の値にします.
合計の数を計算する場合

void main(){
  var num = [1, 2, 3, 4, 5];
  var sum = num.fold<int>(0, (prev, element) => prev + element);
  print(sum); 
  }// => 15

関数型は命令型に比べて複雑なコードになった場合に読みやすくなるようです.

参考(というかこちらのサイトの最初の部分を書いただけ)

https://www.sandromaglione.com/fpdart-functional-programming-in-dart-and-flutter/

Discussion

ログインするとコメントできます