当前位置: 首页 > news >正文

浙江建设厅网站施工员报名襄阳专业网站建设公司

浙江建设厅网站施工员报名,襄阳专业网站建设公司,青海网站制作哪家好,手机怎么搭建属于自己的网站0. 概览 如果我们分别在平静如水、和谐感人的 Swift 和 Python 社区抛出诸如“Python 是天下最好的语言…” 和 “Swift 是宇宙第一语言…”之类的言论会有怎样的“下场”#xff1f; 我们并不想对可能发生的“炸裂”景象做出什么预测#xff0c;也无意比较 Swift 与 Pytho… 0. 概览 如果我们分别在平静如水、和谐感人的 Swift 和 Python 社区抛出诸如“Python 是天下最好的语言…” 和 “Swift 是宇宙第一语言…”之类的言论会有怎样的“下场” 我们并不想对可能发生的“炸裂”景象做出什么预测也无意比较 Swift 与 Python 的孰强孰弱。我们只是想聊聊 Swift 和 Python 语言中一个非常有趣的话题看看谁实现带关联信息的错误异常类型更优雅 在本篇博文中您将了解到如下内容 0. 概览1. “抛出还是不抛出错误这是个问题”2. 带关联信息的错误3. Python 中的实现4. Swift 中实现5. 那么问题来了谁更优雅呢总结 还等什么呢Let’s go 1. “抛出还是不抛出错误这是个问题” 在秃头码农们辛勤操劳的每一天都会遇到多如牛毛的代码错误俗话说得好“事无常形人无完人”没有错误的代码只能是还没有写出来的代码。 所幸的是几乎所有语言均对错误做出了良好和友善的支持Swift 与 Python 自然也不例外 在 Swift 中我们把代码能够抛出的某种“不安分”的东东称为错误Error而在 Python 中这被称之为异常Exception。其实从这种意义上来说它们是同一种东西所以在本篇博文中统统称之为错误。 当函数或方法出现“不按常理出牌”的结果时我们就有必要抛出一个错误。比如除以零 enum AppError: Error {case divisionByZero }func div(dividend: Int, divisor: Int) throws - Int {guard divisor ! 0 else {throw AppError.divisionByZero}return dividend / divisor }上面是 Swift 中对此的一个实现在 Python 中有类似的表达 class DivisionByZero(Exception):passdef div(dividend, divisor):if divisor 0:raise DivisionByZero()return dividend / divisor2. 带关联信息的错误 在某些情况下我们希望抛出的错误中携带一些有用的信息这种错误称之为带关联信息的错误。 比如当用户输入的文本太短不符合要求时我们希望进一步了解到用户输入文本的实际长度以及最短需要的长度。 在 Swift 中我们可以通过枚举关联类型来实现带关联信息的错误类似的在 Python 中我们可以用异常类的附加实例属性来达到这一相同目的。 关于更多 Swift 中枚举使用的奥秘请小伙伴们移步我的专题视频观看 Swift 基本功修炼深入浅出 Swift 中的枚举类型 如果小伙伴们还想进一步学习 Swift 语言的开发技巧可以到我的专题专栏中继续研究 Swift 语言开发精讲文章平均质量分 97 下面我们就来分别看看它们的实现吧 3. Python 中的实现 在 Python 中可以简单的为自定义异常类增加实例属性变量 class TextTooShortException(Exception):def __init__(self, actual, min):super().__init__(self)self.actual actualself.min minMIN_LEN 3try:text woif len(text) MIN_LEN:raise TextTooShortException(len(text), MIN_LEN) except TextTooShortException as error:print(错误文本太短{}希望不小于 {} 个字符.format(len(text), MIN_LEN))如上代码所示我们创建了一个自定义异常类 TextTooShortException其中分别用 actual 和 min 实例属性变量来存放输入文本实际和最短所需的长度。 我们看看运行结果 4. Swift 中实现 在 Swift 中对于错误这种不需要实例化的对象一般可以用枚举来表示当然也可以用 struct这要分情况而定。 对于带关联信息的错误我们只需要创建带关联类型的枚举元素即可 enum MyError: Error {case textTooShort(actual: Int, min: Int) }let text wodo {if text.count MIN_LEN {throw MyError.textTooShort(actual: text.count, min: MIN_LEN)} } catch let my_error as MyError {if case MyError.textTooShort(let actual, let min) my_error {print(输入文字长度\(actual)太短了不能小于\(min))} else {print(其它 MyError: \(my_error))} } catch {print(Other ERR: \(error)) }在上面的代码中我们创建了一个 MyError 类型的错误并添加了一个 textTooShort 枚举子项。其中我们为其嵌入了两个 Int 值作为关联类型分别用来表示 actual 和 min 值。 以下是 Playground 中的运行结果 5. 那么问题来了谁更优雅呢 看过上面两种实现各位小伙伴们可能都会有自己的考量。 在 Swift 中使用类似于命名元组的枚举关联类型显得更轻量级。表达 Error 这一概念无需动用 Class 这一重型武器一个简单的值类型enum足以 在 Python 中的实现也很简单不过使用类来作为异常的载体显得更加“厚重”更加中规中矩。 平心而论Python 在捕获并处理异常时更加简洁而 Swift 在定义错误时更轻量级可惜关联类型枚举在错误解析时比较拖垮。 不过谁说在 Swift 中不能用 Python 的方式自定义错误呢 struct TextTooShortError: Error {var actual: Intvar min: Int }let text wodo {if text.count MIN_LEN {throw TextTooShortError(actual: text.count, min: MIN_LEN)} } catch let tooShortError as TextTooShortError {print(输入文字长度\(tooShortError.actual)太短了不能小于\(tooShortError.min)) } catch {print(Other ERR: \(error)) }总结 在本篇博文中我们讨论了在 Swift 和 Python 两种语言中对于带关联信息的错误异常类型是如何实现的这一话题并对哪种实现更优雅给出笔者自己的感悟。 感谢观赏再会
http://www.hkea.cn/news/14328340/

相关文章:

  • 重庆哪里可以做公司网站搭建视频网页
  • 免费建站的网站有哪些南山网站设计线
  • 想找公司做网站闸北东莞网站建设
  • 企业网站建设开发成本利润多少那个网站可以做视频app制作的
  • 永久免费建站空间网站开发项目实训总结
  • 开封做网站哪家好江苏seo网站排名优化
  • 部门网站建设宗旨直链平台
  • 网站浮动窗口代码编译django做的网站
  • 工程建设标准最新查询网站网站图文列表
  • 中国住房和城乡建设部网站安全网站内容需要备案吗
  • 谷哇网站建设网站开发是程序员吗
  • 网站开发开题报告格式自己做的网站怎么搜不到
  • 建立网站基本步骤开源网站统计
  • 网站建设专业平台个人怎么建立网站
  • 网站的网络营销方案dede视频网站模板
  • 学校网站建设项目背景网页设计基础实训报告
  • 免费的网站模板下载哪里建设企业网站
  • 做企业网站项目网站建设培训ppt
  • 杭州知名网站建设公司wordpress分类目录单个调用
  • 建设门户网站预算甘肃省嘉峪关建设局网站
  • 什么是优化型网站网站定制开发加公众号
  • 超炫酷的网站二次元wordpress博客
  • 怎样做同城配送网站网站建设南京公司
  • 院系网站建设具体要求大丰网站建设找哪家好
  • 衡阳哪有做网站推广的网站的模块
  • 网站建设中扒站为什么是违法的网站建设及维护流程
  • 网站备案号大全wordpress做下载型网站6
  • 网站编辑面试linux下wordpress建站
  • 网站域名免费注册非主流炫彩发光字制作
  • php mysql 企业网站源码物联网平台介绍