オプションタイプのリストを、noneでない要素だけに凝縮する最良の方法とは?
2023-09-25 12:32:51
質問
aオプションのリストから、Someである要素のみを含むリストへの移行に予想外のトラブルが発生しました。
私の最初の試みは
let ga = List.filter (fun xx ->
match xx with
| Some(g) -> true
| None -> false) gao
しかし、当然ながらこの結果型は「オプションリスト」のままです。これを凝縮するためにList.mapを使うには、match文の中ですべてのケースを処理しなければならないので、どうすればいいのかわかりません。私は醜い解決策を持っていますが、私は何か良いものがあるかどうか疑問に思っています。
不細工です。
let rec gOptRemove gdec gacc =
match gdec with
| head :: tail ->
match head with
| Some(a) -> gOptRemove tail (a :: gacc)
| None -> gOptRemove tail gacc
| [] -> gacc
再帰的でない解決策を見つけるか、この種の標準的な方法が何であるかを調べる方がいいと思います。
どのように解決するのですか?
単純に
List.choose id
のように
> [Some 4; None; Some 2; None] |> List.choose id;;
val it : int list = [4; 2]
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン