在Swift

时间:2016-02-28 21:34:49

标签: swift

我试图在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])
}

1 个答案:

答案 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()方法。)