我坚持使用Swift语法。这个代码示例将无法编译,我找不到原因。它说
类型'TextMessageViewModelDefaultBuilder'不符合协议 'ViewModelBuilderProtocol'
import Foundation
protocol MessageModelProtocol { }
protocol MessageViewModelProtocol { }
protocol TextMessageViewModelProtocol:MessageViewModelProtocol {}
protocol TextMessageModelProtocol:MessageModelProtocol {}
protocol ViewModelBuilderProtocol {
associatedtype ModelT: MessageModelProtocol
associatedtype ViewModelT: MessageViewModelProtocol
func canCreateViewModel(fromModel model: Any) -> Bool
func createViewModel(_ model: ModelT) -> ViewModelT
}
class TextMessageViewModelDefaultBuilder: ViewModelBuilderProtocol {
typealias ModelT = TextMessageModelProtocol
typealias ViewModelT = TextMessageViewModelProtocol
init() {}
func createViewModel(_ textMessage: ModelT) -> ViewModelT {
return ViewModelT()
}
func canCreateViewModel(fromModel model: Any) -> Bool {
return model is ModelT
}
}
答案 0 :(得分:-1)
Hamish 在评论中指出,Swift协议中的事实并不符合自己。因此,我无法使用协议类型来实现关联类型的要求。