我试图在Swift中实现map函数。但是我遇到了错误
在地图上( f ,...):无法转换类型' T - >的值U'预期参数类型' _ - > _'
func map<T, U>(f: T -> U, _ list: [T]) -> [U] {
return list.isEmpty ? [] : [f(list.first!)] + map(f, list[1..<list.count])
}
答案 0 :(得分:4)
错误消息具有误导性。问题是
list[1..<list.count]
返回ArraySlice
,而不是Array
,
这样递归调用与参数类型不匹配。
一种可能的解决方案:创建一个真实的&#34;数组切片中的数组:
func map<T, U>(f: T -> U, _ list: [T]) -> [U] {
return list.isEmpty ? [] : [f(list.first!)] + map(f, Array(list[1..<list.count]))
}
(我假设您尝试将其用于教育目的,因为有
已经是集合类型的map()
方法。)