当且仅当它不是时,是否有一种简洁的方法如何映射一个值None
?就像是
def fmapMaybe(f, v):
if v is not None:
f(v)
else:
None
更新:我正在寻找一种方法来处理值,如果它们与 不同None
,否则保持None
,语义与 my 完全一样fmapMaybe
。
在上面的代码中,f
是一个任意的 1 参数函数,并且v
是一个值,f
如果它不同于None
. v
对什么或是没有进一步的限制f
。
举一个具体的例子:我想从字典中获取一个字符串值并将其转换为整数,如果找到的话。所以结果应该是一个整数,或者None
。使用上面的函数,我会写:
fmapMaybe(int, os.environ.get('LINES'))
有没有更短更简洁的方法?
正如 Don Stewart 评论的那样,这类似于Haskellfmap
中的Maybe
函子或Scala 中的map
over Option
。(如果我们认为它f
也可以返回None
,它将类似于>>=
Haskell 和flatMap
Scala 中的 monadic。)