私は乱数を生成するには、この拡張メソッドを使用していた。Swift3ランダム拡張メソッド
func Rand(_ range: Range<UInt32>) -> Int {
return Int(range.lowerBound + arc4random_uniform(range.upperBound - range.lowerBound + 1))
}
は、私はB/Cそれはナンセンスではなかったそれが好き、あなたはこのようにそれを呼ばれる:
let test = Rand(1...5) //generates a random number between 1 and 5
は、だから私は Swift3になりましエラーを受信しています..私は正直に物事がスウィフトで非常に複雑である必要は理由を知りませんが、私は脱線します
No '...' candidates produce the expected contextual result type 'Range<UInt32>'
これが何を意味するのか、またはじめてどのように私の素晴らしいランド機能が再び働くのか分かりますか?私はxと思う... yはもはや範囲またはxを作成しない... yは明示的にUInt32として定義する必要がありますか?物事をもっと簡単にするためのアドバイスはありますか?
ありがとう、ありがとうございます!
'rand'関数がcollectioだけを受け入れるように制限する方法はありますか? 'Int'のn? – rmaddy
@rmaddy: 'func rand(_ coll:C) - > C.Iterator.Elementここで、C.Iterator.Element == Int'はフリー関数、または' extension RandomAccessCollectionはIterator.Element ==拡張メソッドのためのInt。 –