集合上的map
函數將會做出非常不同的事情。它將映射函數應用於集合的每個元素,並根據結果返回一個新的集合。
你要找的是什麼:
func map(minRange:Int, maxRange:Int, minDomain:Int, maxDomain:Int, value:Int) -> Int {
return minDomain + (maxDomain - minDomain) * (value - minRange)/(maxRange - minRange)
}
print(map(minRange: 0, maxRange: 1800000, minDomain: 0, maxDomain: 3000, value: 200000))
由於只有一點點更多的工作,你可以把它通用於所有的整數類型:
func map<T:IntegerArithmetic>(minRange:T, maxRange:T, minDomain:T, maxDomain:T, value:T) -> T {
return minDomain + (maxDomain - minDomain) * (value - minRange)/(maxRange - minRange)
}
另一種選擇是利用Swift Range
類型使呼叫更加簡潔:
func map<T:IntegerArithmetic>(range:Range<T>, domain:Range<T>, value:T) -> T {
return domain.lowerBound + (domain.upperBound - domain.lowerBound) * (value - range.lowerBound)/(range.upperBound - range.lowerBound)
}
map(range:0..<3000, domain:0..<180000, value: 1500)
http://stackoverflow.com/questions/24132399/how-does-one-make-random-number-between-range-for-arc4random - 統一 – Sahil
「在兩個數字之間保留一個數字」是什麼意思?你想生成一個隨機數嗎? –
你的問題還不清楚,但'map'上的文檔可以在[這裏]找到(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html)。 – Caleb