为什么编译器会在标记为@discardableResult的函数上警告未使用的结果?

时间:2017-03-15 03:35:27

标签: swift

Swift 3编译器警告我一个未使用的结果,即使我用@discardableResult标记了该函数。

仅在使用?语法在可选变量上调用函数时才会发生。

为简化问题,我创建了此示例代码。 (我不得不把它放在一个项目中,因为警告没有在操场上显示。)

class Foo {
    @discardableResult func bar() -> String? {
        return "bar"
    }
}

class Tester {
    func doSomething() {
        var foo: Foo?

        foo = Foo()

        foo?.bar() //Warning: Expression of type 'String?' is unused
        foo!.bar() //No warning
    }
}

1 个答案:

答案 0 :(得分:1)

这是一个已知的错误(https://bugs.swift.org/browse/SR-1681),虽然Swift帮派似乎认为它已经解决了。也许修复还没有进入Xcode,或者可能它们只是错了。

UPDATE 我们得到了官方消息:修复程序将从Xcode 8.3开始显示。