如何在Swift中编写适用于所有类型的映射?
作为练习,我正在实现一个map函数,它接受一个数组和一个函数,并将该函数应用于数组的所有元素,但我不知道如何声明它,以便它适用于任何类型的数组。 我可以做类似的事情如何在Swift中编写适用于所有类型的映射?,swift,swift2,Swift,Swift2,作为练习,我正在实现一个map函数,它接受一个数组和一个函数,并将该函数应用于数组的所有元素,但我不知道如何声明它,以便它适用于任何类型的数组。 我可以做类似的事情 func intMap(var arr: [Int], fun: (Int) -> Int) -> [Int] { for i in 0 ..< arr.count { arr[i] = fun(arr[i]) } return arr } intMap([1,2,3],
func intMap(var arr: [Int], fun: (Int) -> Int) -> [Int] {
for i in 0 ..< arr.count {
arr[i] = fun(arr[i])
}
return arr
}
intMap([1,2,3], {x in return x * x})
func intMap(var arr:[Int],fun:(Int)->Int)->[Int]{
对于0中的i..
但这只适用于int
Swift内置地图的类型签名是什么
编辑:
因此,我忽略了一个事实,即我可以在不显式声明其类型的情况下声明param类型签名
func myMap<T>(var arr: [T], fun: (T) -> T) -> [T] {
for i in 0 ..< arr.count {
arr[i] = fun(arr[i])
}
return arr
}
myMap([1,2,3], fun: {
x in return x * x
})
func-myMap(var-arr:[T],fun:(T)->T)->[T]{
对于0中的i..
- 创建一个新的游乐场
- 就在它有
typeimport-UIKit
import-Swift
- 命令单击单词Swift
extension CollectionType {
/// Return an `Array` containing the results of mapping `transform`
/// over `self`.
///
/// - Complexity: O(N).
@warn_unused_result
@rethrows public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]
太好了。所以U可以是T型,也可以是完全不同的类型。
func myMap<T, U>(var arr: [T], fun: T -> U) -> [U] {
var a: [U] = []
for i in 0 ..< arr.count {
a.append(fun(arr[i]))
}
return a
}
let a = [1, 2, 3]
let b = myMap(a, fun: { x in Double(x) * 2.1 })
a
b