2016-11-13 15 views

答えて

1

あなたは直接にすることはできません。それは現在Swiftの欠けている機能です。あなたはダミープロトコルを使用して、それを回避することができます:

protocol _Int {} 
extension Int: _Int {} 

extension CountableClosedRange where Bound: _Int { 
    var sum: Int { 
     // These forced casts are acceptable because 
     // we know `Int` is the only type to conform to`_Int` 
     let lowerBound = self.lowerBound as! Int 
     let upperBound = self.upperBound as! Int 
     let count = self.count as! Int 

     return (lowerBound * count + upperBound * count)/2 
    } 
} 

print((1...100).sum) //5050 

FloatingPointまたはIntegerプロトコルもここで有用である可能性があります。

+0

ありがとうアレクサンダー!それはうまくいった。 – skabob11

1

私は同様の問題がありましたが、他の解決策は機能しませんでした。これはちょうど

extension CountableClosedRange where Bound == Int { 
... 
} 

を使用して

extension CountableClosedRange where Bound: Integer, Bound == Int { 
... 
} 

は(コード補完)をコードでうまくいきましたが、コンパイル時にセグメンテーションフォールト11の結果でした。

関連する問題