2017-03-15 6 views
3

Swift 3コンパイラは、@discardableResultという機能をマークしていますが、未使用の結果を警告しています。@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

おそらくこの1つ(私の)がコメントする人ですが、https://bugs.swift.org/browse/SR-1681 – matt

+0

ありがとう、@matt。しましょう! –

答えて

1

スウィフトギャングは、それが解決されたと考えているようだけれどもそれは、既知のバグ(https://bugs.swift.org/browse/SR-1681)です。 Xcodeにまだ修正されていないのかもしれません。

更新日私たちは正式な言葉を得ました:この修正はXcode 8.3から始まります。

関連する問題