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

Swift中的嵌套类型-什么是最佳实践?

周高畅
2023-03-14
问题内容

swiftlint警告我。

warning: Nesting Violation: Types should be nested at most 1 level deep (nesting)

然而,结构的嵌套是既定的编程技术,以及相当一些人在坚持它。

编辑:确实@vadian指出了Swift语言指南的规则:
要将类型嵌套在另一个类型中,请在其支持的类型的大括号内写入其定义。 类型可以嵌套到所需的多个级别

我知道它与泛型的使用发生冲突,并且Xcode可能会变得异常缓慢。实际上(通过测量最慢的编译点)是我开始研究此嵌套规则的原因。

实行皮棉规则的原因是什么?在这方面的良好做法是什么? 请指出技术原因,而不是纯粹基于意见的建议。

Microsoft实际上有一个有关嵌套类型以及何时合适的页面。尽管它不是针对Swift的,但它确实具有一些有趣的跨语言思想。


问题答案:

经过大量搜索后,我发现@jpsim的评论是“嵌套规则背后的想法是避免复杂的接口”。

因此,除了我的问题中概述的编译器问题(这些问题最终会消退)之外,似乎 没有 任何技术原因可适用此规则。



 类似资料:
  • 以公司的rest表示为例。在这个假设的例子中,每个公司拥有0个或更多的部门,每个部门拥有0个或更多的员工。 一个部门不能没有关联公司。 没有关联部门,员工就无法存在。 null 但是,如果我想列出()所有公司的所有员工,我的困难就来了。 其资源模式将最紧密地映射到(所有员工的集合) 这是否意味着我应该有,因为如果有的话,那么有两个URI可以获得相同的资源? 在基本级别上,返回与嵌套最深的模式完全相

  • 问题内容: 我有一个本质上相当于嵌套字典的数据结构。假设它看起来像这样: 现在,维护和创建它非常痛苦。每当我有一个新的州/县/专业时,我都必须通过讨厌的块创建较低层的字典。此外,如果要遍历所有值,则必须创建烦人的嵌套迭代器。 我也可以使用元组作为键,例如: 这使得对值的迭代非常简单自然,但是在语法上进行诸如汇总和查看字典子集之类的操作在语法上更加痛苦(例如,如果我只是想逐个查看状态的话)。 基本上

  • 问题内容: 打破Javascript中的嵌套循环的最佳方法是什么? 问题答案: 就像Perl一样 如EMCA-262第12.12节所定义。[MDN文件] 与C不同,这些标签只能用于和,而Javascript没有。

  • 问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu

  • 问题内容: 什么是静态嵌套类?静态和非静态嵌套类有什么区别? 问题答案: 静态内部类是嵌套在具有修饰符的另一个类中的类。除了可以访问在其内部定义的类的私有成员之外,它与顶级类几乎相同。 类是静态内部类。类是一个非静态的内部类。两者之间的区别是,非静态内部类的实例被永久连接到的实例-你不能创建一个没有。不过,您可以独立创建对象。 中的代码,并且都可以访问x; 不允许使用其他代码。

  • 问题内容: 我正在构建一个基于expressjs的应用程序,我想在其中记录所有事件。我可以找到温斯顿,这似乎很酷。无论如何,我正在寻找一种方法将其连接到我的expressjs应用程序。 我还想要在应用程序内部登录。我的要求不是那么简单,所以我想将所有内容记录在我的应用程序中(不仅是请求)。 我目前的情况: server.js (我想在此级别记录http请求) 路线/something.js con