2016-09-26 1 views
4

Swift 3は、未使用関数の戻り値の警告を無効にする関数の@discardableResultアノテーションをintroducedとしています。SwiftのClosureの@discardableResultの使用

私は閉鎖のためのこの警告を沈黙させる方法を探しています。

現在、私のコードは次のようになります。

let g = f(5) 
g(3) 
g(7) 
g(11) 

私はほとんどの場所で:私はかつて私は、繰り返し呼び出す閉鎖gを得ることがfを呼び出して、様々な場所で

func f(x: Int) -> Int -> Int { 
    func g(_ y: Int) -> Int { 
    doSomething(with: x, and: y) 
    return x*y 
    } 
    return g 
} 

doSomethingへのネストされたコールの副作用にのみ関心があり、クロージャgの戻り値ではありません。 Swift 3では、未使用の結果について私のプロジェクトに数十件の警告があります。 gへの呼び出しを_ = g(...)に変更する以外に警告を抑制する方法はありますか?私は@discardableResult注釈を置くことができる場所を見つけることができませんでした。

+0

を:)このをご覧くださいhttps://swift.org/documentation/api-design-guidelines/ – PeejWeej

+0

それはこのようには思えません可能ですが、追加する必要があるようです。それに関する議論があるかどうかを知りたいかもしれません:https://github.com/apple/swift-evolution – PeejWeej

+0

ここでAPIデザインガイドラインはどのように役立ちますか? – Theo

答えて

5

私はクロージャにその属性を適用する方法はないと思います。あなたは結果破棄し、別のあなたの閉鎖取り込むことができます:

func discardingResult<T, U>(_ f: @escaping (T) -> U) -> (T) -> Void { 
    return { x in _ = f(x) } 
} 

let g = f(5) 
g(3) // warns 
let h = discardingResult(g) 
h(4) // doesn't warn 
関連する問題