议定书不符合自己的要求?
为什么这个Swift代码没有编译?
protocol P { }struct S: P { }let arr:[P] = [ S() ]extension Array where Element : P { func test<T>() -> [T] { return [] }}let result : [S] = arr.test()
编译器说:“类型P
不符合协议P
”(或者,在Swift的更高版本中,“不支持使用'P'作为符合协议'P'的具体类型。”)。
为什么不?不知怎的,这感觉就像语言中的漏洞。我意识到问题源于将数组声明arr
为协议类型的数组,但这是不合理的事情吗?我认为协议正是为了帮助提供类似层次结构的结构?
繁星coding