当且仅当它不是时,是否有一种简洁的方法如何映射一个值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 中的mapover Option。(如果我们认为它f也可以返回None,它将类似于>>=Haskell 和flatMapScala 中的 monadic。)