📝
【Flutter】Flutterやdartで関数型プログラミング
dart/flutterのパッケージ
Flutterやdartで関数型プログラミングを使うためのパッケージにfpdartやdartzがあります.
# 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
関数型は命令型に比べて複雑なコードになった場合に読みやすくなるようです.
参考(というかこちらのサイトの最初の部分を書いただけ)
Discussion