0
任何类型的...协议功能,可以采取如果我创建一个协议符合协议
protocol MyProtocol {
var someArray: [String] { get }
init(someArray: [String])
func adding(_ other: Self) -> Self
}
extension MyProtocol {
func adding(_ other: Self) -> Self {
return Self(someArray: someArray + other.someArray)
}
}
然后我就可以创建符合它一个struct ...
struct Foo: MyProtocol {
let someArray: [String]
}
现在我可以创建两个Foos
并将它们添加在一起。
但如果我现在创建另一个结构也符合MyProtocol
...
struct Bar: MyProtocol {
let someArray: [String]
}
然后,我不能这样做......
let foo = Foo(["Hello", "World"])
let bar = Bar(["Goodbye"])
let fooBar = foo.adding(bar)
由于功能要求的other
类型是与您正在运行该功能的类型相同。
有没有可能没有这个限制?只要符合MyProtocol
,就可以将任何类型或结构添加到任何其他类型的结构中?
思考
嗯......也许我想尝试错误的方式来解决这个问题?我想我可以通过从函数的输入参数中删除Self
要求并仅使用[String]
作为输入参数来解决此问题。
啊!不知何故,这让我过去了。我认为自我要求是针对整个事情的。谢谢:D嗯......当我尝试说它只能用作通用约束,因为它有自己的需求?稍后再看看。感谢:D – Fogmeister