为什么不允许这样做?
class Box<T>{
let value: T
init(_ value:T){
self.value = value
}
func map<U>( f: T -> U)->Box<U>{
return Box(f(self.value))
}
}
return Box(f(self.value))
处的错误:
错误:无法调用&#39; Box&lt; T&gt;&#39;类型的启动器使用类型&#39;(U)&#39;
的参数列表
答案 0 :(得分:2)
您必须指定要返回的Box
对象的类型:
class Box<T> {
let value: T
init(_ value:T){
self.value = value
}
func map<U>(f: (T) -> (U)) -> Box<U> {
return Box<U>(f(self.value))
}
}
在Box<T>
类实现的上下文中,对Box
的任何引用都假定为Box<T>
,除非您明确指定类型(就像我对Box<U>
所做的那样,在上面的return
声明中。