假设您具有以下结构和协议:
struct Ticket {
var items: [TicketItem] = []
}
struct TicketItem {
}
protocol DisplayableTicket {
var displayedItems: [DisplayableTicketItem] { get }
}
protocol DisplayableTicketItem {}
现在,如果我要像这样扩展这些结构:
extension Ticket: DisplayableTicket {
var displayedItems: [DisplayableTicketItem] {
return self.items
}
}
extension TicketItem: DisplayableTicketItem {}
我在
return self.items
行上收到以下错误:Cannot convert return expression of type '[TicketItem]' to return type 'DisplayableTicketItem'
如果将Ticket和TicketItem的类型更改为
class
,则不会出现错误。为什么Ticket结构不能包含TicketItem结构的数组并如上所述进行扩展? 最佳答案
像这样:
extension Ticket: DisplayableTicket {
var displayedItems: [DisplayableTicketItem] {
return self.items.map{$0 as DisplayableTicketItem}
}
}
关于swift - Swift结构扩展:“无法将类型<type>的返回表达式转换为类型<type>的返回值”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33635924/