gpt4 book ai didi

swift - (SwiftLint)如果有主体,如何在 "\n"之后始终为 "{"(新行)编写规则(也许是自定义)?

转载 作者:行者123 更新时间:2023-12-05 05:38:56 25 4
gpt4 key购买 nike

我正在使用 SwiftLint,如果有正文,我需要在“{”之后换行,例如,这是正确的

    func foo() {
if true { }
}

但这似乎不对

    func foo() {
if true { print("This print should be on the new line") }
}

like this

func foo() {
if true {
print("This print should be on the new line")
}
}

如何做到这一点?

UPD

谢谢,@Bram,有这样一个正则表达式

custom_rules:
newline_block:
name: "Newline Block"
regex: 'if \(?\w+\)? \{[ ]*(.+)+[ ]*\}'
message: "Statement must be on its own line"

问题是这个正则表达式用 if 后的一个词捕获所有条件,就像这样

if myCondition { } 

大括号是否在下一行并不重要,但是,这个正则表达式不会捕获这样的条件

if 0 < 1 { print() }

最佳答案

看起来 SwiftLint 对任何单个字符 (.) 都有点不稳定,所以我得到的最接近的是这个

custom_rules:
newline_block:
name: "Newline Block"
regex: "\\{[ ]*(\\S|( +))+[ ]*\\}"
message: "Statement must be on its own line"

更好的正则表达式是 {[ ]*(.+)+[ ]*}(未转义),但出于某种原因,当我在 Xcode 上运行它时它不起作用。

这可以满足您对打印件的要求,但该解决方案确实有一些缺点:

func foo() {
// No warning
if true {}
// Newline Block Violation: Statement must be on its own line (newline_block)
if true { }
}

而且,但我不确定这是否也适用于您:

var connection: OpaquePointer? {
// Newline Block Violation: Statement must be on its own line
get { queue.sync { underlyingConnection } }
// Newline Block Violation: Statement must be on its own line
set { queue.sync { underlyingConnection = newValue } }
}

关于swift - (SwiftLint)如果有主体,如何在 "\n"之后始终为 "{"(新行)编写规则(也许是自定义)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72813057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com