Swift 我是否会遇到共享需求协议的问题?

Swift 我是否会遇到共享需求协议的问题?,swift,protocols,composition,swift-protocols,Swift,Protocols,Composition,Swift Protocols,我可能不会做这样的事。但我问这个问题是因为我没有得到任何警告或任何东西。这不是一只虫子吗?也就是说,协议见证表通过一个一致性符合两个要求,并且它隐藏了一些变量,如果我刚刚将其中一个协议上的变量更改为id,那么要求会有所不同,这至少值得一次警告吗?然后用类似于@sharedPWT:D的东西让它安静下来 这代码不是天生的味道吗?或者,在某些情况下,这确实是有帮助的?您的证人表想法是一种转移视线的想法,因为没有代码,也没有调度。比那简单多了。这两个协议仅仅是关于如何构造采用类型的指令;他们说“这样做”

我可能不会做这样的事。但我问这个问题是因为我没有得到任何警告或任何东西。这不是一只虫子吗?也就是说,协议见证表通过一个一致性符合两个要求,并且它隐藏了一些变量,如果我刚刚将其中一个协议上的变量更改为
id
,那么要求会有所不同,这至少值得一次警告吗?然后用类似于
@sharedPWT
:D的东西让它安静下来


这代码不是天生的味道吗?或者,在某些情况下,这确实是有帮助的?

您的证人表想法是一种转移视线的想法,因为没有代码,也没有调度。比那简单多了。这两个协议仅仅是关于如何构造采用类型的指令;他们说“这样做”,而在你的采纳者身上,你就是这样做的,所以你符合这两个要求。没问题

如果这些都是带有扩展和实现的方法,那么现在我们就有话要说了!例如:

protocol House {
    var name : String {get set}
    func changeAddress()
}

protocol Person {
    var name : String {get set}
    func changeAddress()
}

class Something : Person, House {
    var name : String

    init (name: String){
        self.name = name
    }
    func changeAddress(){

    }
}
这代码不是天生的味道吗?或者在某些情况下,这实际上是有帮助的


这不是一种难闻的气味,事实上,在非常真实的意义上,这种事情在整个标准库中一直都在发生。毕竟,协议的层次结构是什么,只是你所概述的东西的一个例子?说P2协议采用P1协议只是说P1需要什么,P2也需要什么的简写。

你的证人表想法是一种误导,因为没有代码也没有调度。比那简单多了。这两个协议仅仅是关于如何构造采用类型的指令;他们说“这样做”,而在你的采纳者身上,你就是这样做的,所以你符合这两个要求。没问题

如果这些都是带有扩展和实现的方法,那么现在我们就有话要说了!例如:

protocol House {
    var name : String {get set}
    func changeAddress()
}

protocol Person {
    var name : String {get set}
    func changeAddress()
}

class Something : Person, House {
    var name : String

    init (name: String){
        self.name = name
    }
    func changeAddress(){

    }
}
这代码不是天生的味道吗?或者在某些情况下,这实际上是有帮助的


这不是一种难闻的气味,事实上,在非常真实的意义上,这种事情在整个标准库中一直都在发生。毕竟,协议的层次结构是什么,只是你所概述的东西的一个例子?说P2协议采用P1协议只是表示P1需要什么,P2也需要什么的简写。

请参阅我的编辑。两个协议都说“这样做”,而你这样做的意思是“这样做是上下文的”。对我来说,这是不透明的…你也可以分享一些标准库的例子,它们也有同样的功能…仍然没有协议的扩展实现,所以仍然没有调度,也没有问题。在标准库的例子中,问问自己什么是协议层次结构。我的问题是我会遇到问题吗?您的答案似乎是,在扩展和实现方面存在问题。你能举个例子吗?因为我没有跟你说,我说你永远不会跟我说,因为你在摆姿势。谢谢。我明白了,所以只要有一个单一的采用点,事情就好了?至于协议层次,我喜欢你的建议,问问我自己。我做到了。我想我不够聪明。我转到并单击了
Int
的协议层次结构。我是否应该研究equalable和Hashable,看看它们是否有共同的需求?或者从本质上讲,对于继承协议,协议组合与继承之间没有区别。对于继承来说,这是有意义的。作文好像不一样。请看我的编辑。两个协议都说“这样做”,而你这样做的意思是“这样做是上下文的”。对我来说,这是不透明的…你也可以分享一些标准库的例子,它们也有同样的功能…仍然没有协议的扩展实现,所以仍然没有调度,也没有问题。在标准库的例子中,问问自己什么是协议层次结构。我的问题是我会遇到问题吗?您的答案似乎是,在扩展和实现方面存在问题。你能举个例子吗?因为我没有跟你说,我说你永远不会跟我说,因为你在摆姿势。谢谢。我明白了,所以只要有一个单一的采用点,事情就好了?至于协议层次,我喜欢你的建议,问问我自己。我做到了。我想我不够聪明。我转到并单击了
Int
的协议层次结构。我是否应该研究equalable和Hashable,看看它们是否有共同的需求?或者从本质上讲,对于继承协议,协议组合与继承之间没有区别。对于继承来说,这是有意义的。就构图而言,它似乎不同。相关:。正如马特所说,这是完全合法的。例如,在stdlib中,
SetAlgebra
Collection
都有一个
var isEmpty:Bool{get}
是必需的
Set
既符合
SetAlgebra
又符合
Collection
的要求,并通过其实现满足了要求。相关:。正如马特所说,这是完全合法的。例如,在stdlib中,
SetAlgebra
Collection
都有一个
var isEmpty:Bool{get}
是必需的
Set
既符合
SetAlgebra
又符合
Collection
的要求,并通过其实现来满足要求。