我有一个协议,
Device
,其中包含所需的方法
makeACopy(device: Device) -> Device
. 当结构符合
装置
,它应该指定自己来代替
装置
现在,我想让我的
Phone
结构符合
装置
. 然而,当我遵从
要求
makeACopy(device: Phone) -> Phone
,我得到这个错误:
类型“Phone”不符合协议“Device”
这是我的密码:
protocol Device {
var name: String { get set }
func makeACopy(device: Device) -> Device
}
struct Phone: Device { /// Error: Type 'Phone' does not conform to protocol 'Device'
var name = "My Phone"
func makeACopy(device: Phone) -> Phone { /// my attempt to conform to `Device`'s method requirement
return Phone(name: self.name)
}
}
符合
装置
,我想我的
makeACopy(设备:电话)——>电话
装置
func makeACopy(device: Device) -> Device
需求接受协议一致性
参数?例如,替换
device: Device
具有
device: Phone
?