我自己的自定义类中的扩展

2024-01-12

我正在阅读另一个SO问题,Swift do-try-catch 语法 https://stackoverflow.com/questions/30720497/swift-do-try-catch-syntax/30720807#30720807。在他的回答中,rickster为 OP 的自定义类创建扩展。Konrad77评论说这是“保持代码整洁的好方法”。我尊重他们的知识,这让我相信我在自己的代码中遗漏了要点。

为我创建的类创建扩展还有其他好处(除了清洁之外)或理由吗?我可以将相同的功能直接放入类中。如果我是唯一使用该课程的人或者其他人将访问该课程,那么答案会改变吗?


对于从头开始创建的类,扩展是一种通过结构的强大文档类型。您将类的核心放在初始定义中,然后添加扩展以提供附加功能。例如,增加对协议的遵守。它为所包含的代码提供局部性:

struct Foo {
  let age: Int
}

extension Foo: CustomStringConvertible {
  var description:String { return "age: \(age)" }
}

我可以将协议和计算属性放在结构声明中吗?绝对可以,但是当你有超过一两个属性时,它就会开始变得混乱且难以阅读。如果代码不干净且不可读,则更容易产生错误。使用扩展是避免复杂性带来的困难的好方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我自己的自定义类中的扩展 的相关文章

随机推荐

  • 我如何有效地使用 angularjs 并牢记安全性?

    当我知道它们不安全时 为什么我应该使用 angular js 或其他类似的 js 框架 我所说的安全性是指 所有代码都是用纯 JavaScript 编写的 可以在 devtools 或 firebug 中编辑 javascript 像表单提
  • 派生模板类对基类成员数据的访问

    这个问题是对以下问题的进一步推进这个线程 https stackoverflow com questions 1117693 initializing template base class member types in derived
  • 如何在 C# 中重新创建调用 TREND() 的 Excel 公式?

    我正在构建一个 net 页面来模仿电子表格 该表包含此公式 ROUND TREND AA7 AE7 AA 4 AE 4 AF 4 1 有人可以提供相当于 C 的内容吗TREND 或者 如果任何人都可以提供围绕它的快捷方式 那也很好 我对那里
  • 删除“;”和“CRLF”之间的所有空格

    我正在使用 Notepad v8 4 6 我想替换后面的所有空格 在 Windows 上位于该行的末尾 我用过这个 s 1 r n 它找到正确 但是当我尝试替换时 删除之间的所有空格 和 CRLF 它没有任何作用 如何删除之间的所有空格 a
  • .NET 4.5 通用成员资格提供程序表名称

    有没有办法在数据库中为新的 NET 4 5 DefaultMembershipProvider 表名添加前缀 它们过去被命名为 aspnet Users aspnet Roles 等 现在只被命名为 Users Roles 等 这与我的具有
  • ODI12c 中每个映射的最大用户数

    我是 ODI 新手 在从事 ODI 项目时 我面临一个问题 我在 ODI12c 中有 10 个映射 并且所有映射都使用相同的目标表 但由于某些性能问题 我希望一次最多只有 2 个用户可以执行映射 最多 2 个映射 因为他们使用相同的目标表
  • 从 XMLReader 打开 simplexml 中的 CData

    我有一堆 XML 文件 我使用 XMLReader 将其加载到我的脚本中 创建 DOM 对象 然后转换为 Simplexml 问题是 XML 文件之一使用 SIMPLEXML 忽略的 CDATA 并且通常使用 SIMPLEXML LOAD
  • 如何在scala中实现通用平均函数?

    对于任何特定类型的数字 即双精度数 整数 来说 这似乎很容易出现问题 但在一般情况下很难编写 implicit def iterebleWithAvg data Iterable Double new def avg Double data
  • Common Lisp:为什么我的尾递归函数会导致堆栈溢出?

    我在理解 Common Lisp 函数的性能方面遇到了问题 我还是个新手 我有这个函数的两个版本 它只是计算给定的所有整数的总和n 非尾递归版本 defun addup3 n if n 0 0 n addup n 1 尾递归版本 defun
  • 将鼠标悬停在 1 个子元素上 - 隐藏其他 div 内的其他子元素,仅限 css

    这是问题 div class dep wrap div class dep div class dim div div div class dep div class dim div div div class dep div class
  • Semantic-UI React 中的侧边栏 + 固定顶部菜单

    Semantic UI React 中是否可以有侧边栏 固定顶部菜单 你尝试过这样的事情吗 menu menu
  • iOS 5 中的键盘调整大小事件(中文键盘错误)?

    从 iOS 5 开始 键盘现在可以根据输入语言改变高度 具体来说 中文现在在键盘上方包含一个自动完成部分 与您在 Android 中看到的非常相似 该自动完成部分会增加键盘的测量高度 是否有一个事件可以订阅和 或接收有关键盘何时因用户单击
  • Pyinstaller 可执行文件找不到包含的“flask-compress”发行版

    这是我的系统信息 123 INFO PyInstaller 4 0 123 INFO Python 3 5 4 124 INFO Platform Windows 10 10 0 18362 SP0 我一直在尝试使用 Pyinstaller
  • 如何使用 jQuery 比较两个日期值[重复]

    这个问题在这里已经有答案了 我有两个字符串字段代表页面中的日期 我想比较这两个字段以了解我的第一个日期是否 tr td align right First Date td td align left td tr
  • 与 Firestore 异步

    我正在努力使ProgressBar旋转 同时数据来自Firestore正在加载到ListView 然后 加载后 ProgressBar应该消失 我就是这么做的 但在多线程方面我仍然是一个完全的零 这是内部类 我尝试使用异步 Progress
  • @Transactional 应该放在哪里?在接口规范或实现中? [复制]

    这个问题在这里已经有答案了 什么被认为是放置的最佳实践 Transactional注解 我应该注释接口方法还是实现 在我看来 这实际上完全取决于您的应用程序架构 这取决于您如何代理您的类 如果您的应用程序设置为proxy target cl
  • 如何在 Python 中向 YAML 文件添加注释

    我正在使用以下方式编写 YAML 文件https pypi python org pypi ruamel yaml https pypi python org pypi ruamel yaml 代码是这样的 import ruamel ya
  • cmake 和 libpthread

    我在跑RHEL 5 1并使用gcc 我怎么说cmake to add pthread编译和链接 Manuel 已经到了那里 您也可以添加编译器选项 如下所示 如果您有 CMake 3 1 0 这变得更加容易 https github com
  • 在 iOS 11 中使用大标题时调整栏按钮项目的位置

    我在 iOS 11 中使用大标题导航栏 但是当我添加一个栏按钮项目时 它看起来很奇怪 位于与原始标题导航栏相同的位置 我想当标题很大时将栏按钮项目向下移动 并在导航栏不再大时将其移回原来的位置 这样做的最好方法是什么 这是一张显示栏按钮项目
  • 我自己的自定义类中的扩展

    我正在阅读另一个SO问题 Swift do try catch 语法 https stackoverflow com questions 30720497 swift do try catch syntax 30720807 3072080