2017-03-15 21 views
3

即使我已用@discardableResult标记了函数,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 
    } 
} 
+0

已知错误https://bugs.swift.org/browse/SR-1929但声称已解决。如果不是,你应该告诉他们。 – matt

+0

虽然也许这(我)是一个评论:https://bugs.swift.org/browse/SR-1681 – matt

+0

谢谢@matt。会做! –

回答

1

这是一个已知的bug(https://bugs.swift.org/browse/SR-1681),虽然斯威夫特团伙似乎认为它已经解决了。也许这个修复还没有进入Xcode,或者他们错了。

UPDATE我们得到官方的话:修复程序将出现在Xcode 8.3中。

相关问题