An empty list terminates flatMap (selectMany) sequence.
sukobuto opened this issue · 0 comments
sukobuto commented
flatMap のセレクタで空のリストを返却すると、その時点でシーケンスが中断されてしまいます。
空のリストがない場合は
Ginq::from(['a' => 2, 'b' => 3, 'c' => 4, 'd' => 5])
->flatMap(function($times, $key) {
return Ginq::repeat($key, $times);
});
以下のように正常に出力されます。
[
'0' => "a",
'1' => "a",
'2' => "b",
'3' => "b",
'4' => "b",
'5' => "c",
'6' => "c",
'7' => "c",
'8' => "c",
'9' => "d",
'10' => "d",
'11' => "d",
'12' => "d",
'13' => "d",
]
空のリストが含まれる場合
Ginq::from(['a' => 2, 'b' => 0, 'c' => 4, 'd' => 5])
->flatMap(function($times, $key) {
return Ginq::repeat($key, $times);
});
以下のように後続の要素が無視されてしまいます。
[
'0' => "a",
'1' => "a",
]