そうでない場合にのみ、値をマップする簡潔な方法はありNoneますか? 何かのようなもの
def fmapMaybe(f, v):
if v is not None:
f(v)
else:
None
更新:None値がと異なる場合は値を処理する方法を探していNoneますfmapMaybe。
上記のコードでfは、 は引数が 1 つの任意の関数であり、 とは異なる場合にvに渡される値です。何または何であるかについて、これ以上の制限はありません。fNonevf
具体例を挙げると、辞書から文字列値を取得し、見つかった場合は整数に変換したいと考えています。したがって、結果は整数またはNone. 上記の関数を使用して、次のように記述します。
fmapMaybe(int, os.environ.get('LINES'))
より短く、より簡潔な方法はありますか?
Don Stewart がコメントしたように、これはHaskell のファンクタやScalafmapの overに似ています。(そして、も返せると考えると、Haskell やScala のモナドに似ています。)MaybemapOptionfNone>>=flatMap