加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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的移植,而不用改变太多

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读