Scala的选项是否有Python等价物?
发布时间:2020-12-16 09:31:55 所属栏目:安全 来源:网络整理
导读:我真的很喜欢在Scala中使用选项和任意单子。在Python中有什么等同于这些东西吗?如果没有,那么在不抛出异常的情况下,pythonic处理错误或“缺少值”的方式是什么? 解决方法 嗯,真的,一个函数的pythonic方式说“我没有定义在这一点上”是提出一个例外。 i
我真的很喜欢在Scala中使用选项和任意单子。在Python中有什么等同于这些东西吗?如果没有,那么在不抛出异常的情况下,pythonic处理错误或“缺少值”的方式是什么?
解决方法
嗯,真的,一个函数的pythonic方式说“我没有定义在这一点上”是提出一个例外。
>>> int("blarg") Traceback (most recent call last): ... ValueError: invalid literal for int() with base 10: 'blarg' >>> dict(foo=5)['bar'] Traceback (most recent call last): ... KeyError: 'bar' >>> 1 / 0 Traceback (most recent call last): ... ZeroDivisionError: integer division or modulo by zero 这部分是因为python没有(通常有用的)静态类型检查器。在编译时,python函数不能在语法上声明它具有特定的代码区;没有办法强制调用者匹配函数返回类型中的所有情况。 如果你愿意,你可以写(愚蠢的)Maybe包装: class Maybe(object): def get_or_else(self,default): return self.vaue if isinstance(self,Just) else default class Just(Maybe): def __init__(self,value): self.value = value class Nothing(Maybe): pass 但是我不会这样做,除非你尝试从scala到python的移植,而不用改变太多 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |