当前位置: 首页 > 面试题库 >

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

白翔
2023-03-14
问题内容

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

除了为我创建的类创建扩展之外,还有其他好处(除了整洁)还是原因?我可以将相同的功能直接放入类中。如果我是唯一使用该类的人,或者其他人将使用它,答案是否会改变?


问题答案:

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

struct Foo {
  let age: Int
}

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

我可以将协议和计算属性放在struct声明中吗?绝对可以,但是当您拥有一个或两个以上的属性时,它就会变得凌乱且难以阅读。如果代码不干净且不易读,则创建错误更容易。使用扩展是避免复杂性带来的困难的好方法。



 类似资料:
  • 好的,在laravel 4中,如果我想添加自己的自定义类,例如:库\myFunction.php然后我执行以下步骤: 添加myFunctions.php到app/库/myFunctiosn.php 在app/start/global.php,在ClassLoader::addDirectory(数组(,我添加app_path()。 为了在我的刀片视图中调用它,我添加了以下代码 它是有效的。 但是如

  • 我正在使用reverfit2、rxjava2和adapter-rxjava来实现我的http api调用。 如果我有很多api需要实现,并且每个单独的api实现都需要添加这两行: 我不想在每个api实现中添加它们。我想使用MyObservable作为api定义的结果类型。 我的想法如下所示: 我在https://github.com/square/reverfit/blob/master/reve

  • 我想创建我自己的地图减少工作。 map类的输出是:文本(键)、文本(值) reduce类的输出是:文本,不可扭曲 我试图通过以下方式实现它: 当我尝试运行它时,它会显示以下输出并终止 错误的课程从哪里来? 和 工作失败的原因 我不明白哪里出了问题。任何帮助

  • 问题内容: 我有以下代码: 当执行时返回: 我本来希望结果是1和true。为什么我的元素没有被认为是相同的,我该如何纠正?谢谢,韦恩。 问题答案: 您需要实现和每总承包合同MyElement。如果没有,将使用默认实现比较对象的内存地址。由于要在contains调用中创建MyElement的新实例,因此它会返回false。

  • 我想创建一个自定义的树数据结构,只有节点,我可以迭代他们。然后,我可以扩展这个类,并有非常基本的树 我已经开始工作了,但是当我试图扩展Node类时,问题就来了。对于扩展类,继承的迭代器方法仍然返回节点迭代器,这意味着我每次都要强制转换。下面是我遇到的问题的一个基本示例。让我们建立一个包含整数的树: 是否有一种简单的方法可以解决这个问题,而不需要将iterator()方法从Node类复制到Integ

  • 问题内容: 我需要在cfml页面中使用自己的java类。 文档中的此项听起来不错,但没有说明我必须创建哪些文件。 我试图在网站根目录下创建一个页面。然后将+ 放在同一路径中。但这会导致错误“找不到类”! 你能帮我么? 问题答案: 同一路径中的TestClass.java + TestClass.class。 您不能仅将文件放置在任何地方。CF服务器启动时, 仅 检查类/ jar的特定位置。这些位置