抑制Swift编译器警告

Bed*_*ord 13 closures compiler-warnings suppress-warnings ios swift

我在Swift(Xcode 6.3 beta)中使用Nimble断言框架进行单元测试.它运行正常,但编译器会对Nimble源代码中的一行提示警告:

public func expect<T>(expression: () -> T?, file: String = __FILE__, line: UInt = __LINE__) -> Expectation<T> {
    return Expectation(
        expression: Expression(
            expression: expression,
            location: SourceLocation(file: file, line: line),
            isClosure: true))
}
Run Code Online (Sandbox Code Playgroud)

警告是针对第一行:

具有默认参数的参数之前的Closure参数不会被视为尾随闭包

这不是一个非常严重的问题,但我想在我的项目中保持编译器警告的数量很少(零).有没有办法删除此警告?

Jul*_*ról 25

如果方法签名如下所示,您可以避免警告:

public func expect<T>(expression: (() -> T?), file: String = __FILE__, line: UInt = __LINE__) -> Expectation<T> 
Run Code Online (Sandbox Code Playgroud)

在第一个参数周围添加了额外的括号,使用Swift 2.0和Xcode 7.1进行了测试

修复它的另一种方法是在闭包属性之前使用默认值的所有属性作为尾随闭包是一个非常方便的事情