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