[swift-evolution] two protocols with the same method name

品雪 pinxue at gmail.com
Fri Jan 8 21:26:09 CST 2016


That's totally wrong!

        protocol Marriageable {
                var ringImageFileName: String? { get set }   // File name
of image of this person's wedding ring.
        }
        protocol CallReceivable {
                var ringtoneFileName: String? { get set }   // File name of
ringtone to be used for this person.
        }



On Sat, Jan 9, 2016 at 11:09 AM, Brent Royal-Gordon via swift-evolution <
swift-evolution at swift.org> wrote:

> > I don’t really get what you are driving at.
>
> The point is that, although `A` and `B` both require properties with the
> same name, they expect different semantics from that property. Let's maybe
> give these more concrete names so you can understand the idea:
>
>         protocol Marriageable {
>                 var ring: String? { get set }   // File name of image of
> this person's wedding ring.
>         }
>         protocol CallReceivable {
>                 var ring: String? { get set }   // File name of ringtone
> to be used for this person.
>         }
>
>         struct Person: Marriageable, CallReceivable {
>                 var ring: String?
>         }
>
> Of course a person is marriageable and can this have "a ring", and of
> course you can also receive a call from them and they can thus have "a
> ring". But in reality, the "ring" that satisfies one of these things will
> not work for the other. If your best friend gets married and you add an
> image of the ring, then the next time your friend calls you, the phone
> ringing screen will try to play a JPEG as an MP3.
>
> The "ring" example is, of course, slightly contrived, but I'm sure you can
> imagine a similar problem with real names, where you end up using the same
> term for two different and incompatible things.
>
> What the OP is basically asking is, when Swift sees the same type
> conforming to Marriageable and CallReceivable, should it optimistically
> assume that the `ring` properties they both require are compatible and
> allow the code to pass through without comment? Or should it
> pessimistically assume that the `ring` properties are incompatible and emit
> a warning or error about them?
>
> --
> Brent Royal-Gordon
> Architechies
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>



-- 
Best Regards!

Yang Wu
--------------------------------------------------------
Location: Pudong, Shanghai, China.
EMail    : pinxue at gmail.com
Website: http://www.time2change.mobi http://rockplayer.com
Twitter/Weibo : @pinxue
<http://www.pinxue.net>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160109/d8fd8c19/attachment.html>


More information about the swift-evolution mailing list