struct Email {
struct Constraints {
static let top = 20.asConstraint()
}
static let placeholder = "login_email"
}
如何解决这个问题?
答案 0 :(得分:8)
SwiftLint,nesting
这一特定规则已在以下问答A中进行了讨论:
有些人一致认为,这条规则不是基于技术原因,而是基于意见的“最佳实践”规则,显然不是一个例如由Swift标准库(经常使用嵌套类型)。此外,Swift语言指南,特别是Nested Types Section,不包含针对深度为1的嵌套类型/建议的警告。
...类型可以嵌套到所需的级别。
这一点(基于意见的规则)的一个动机可以在SwiftLint issue 1450中找到:
jpsim :
嵌套规则存在有两个原因:
- 以避免API中的过度嵌套类型
- 避免过度缩进的陈述(又名厄运的金字塔)
...
基于以上所述,除非您发现您的代码变成了难以理解的厄运意大利面金字塔(我不相信您的示例中的情况),您可以简单地考虑禁用the nesting
rule:
// swiftlint:disable nesting
答案 1 :(得分:4)
您可以创建另一个结构:
struct Email {
let constraints = EmailConstraints()
let placeholder = "login_email"
}
struct EmailConstraints {
let top = 20.asConstraint()
}
正如您稍后在评论中提到的,由于这只是一个linter错误,您可以在 swiftlint.yml 文件中禁用此规则。
答案 2 :(得分:1)
尝试在您的.swiftlint.yml
nesting:
type_level:
warning: 3 --> this means the warning appears if you nest 3 level deep instead of 1
error: 6
statement_level:
warning: 5
error: 10