Hi Karl, > 1. Yes > 2. Yes > 3. I don't know the actual reason, but Any and AnyObject have special meaning > to the compiler and objects implicitly "conform"" to them. Either the > implementation doesn't support extending those types, or we explicitly > decided that extending these implicit existentials was a bad idea (what could > you even write in an extension in Any? You'd almost certainly have to cast it > to Something. Extend Something instead.)
Ok. Yes, I agree it makes sense to disallow that. Thanks for your answer! Best regards, Toni > - Karl > > > >> On Nov 21, 2016 at 11:09 am, <Toni Suter via swift-users >> <mailto:swift-users@swift.org>> wrote: >> >> Hi everyone, >> >> I am trying to understand existentials in Swift. I understand that in the >> following code, P1 & P2 is an existential type, because it supports values >> from all types that conform to both P1 and P2. >> >> protocol P1 {} >> protocol P2 {} >> var x: P1 & P2 >> >> However, this raises a few questions for me: >> >> 1. In the following code, is x also an existential? >> protocol P {} >> var x: P >> >> The proposals / blog posts that I read always talk about the protocol >> composition syntax, >> but to me, this is the same as the first example, just with only a single >> protocol requirement. >> >> 2. Are Any and AnyObject also existentials? >> So far, my understanding is: >> Any is an existential with no requirements >> AnyObject is an existential with only a class requirement >> >> 3. Why can I not extend Any / AnyObject? >> For example, AnyObject is a protocol defined in the standard library. Why is >> it not extensible? >> >> Thanks and best regards, >> Toni >> _______________________________________________ swift-users mailing list >> swift-users@swift.org <mailto:swift-users@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-users >> <https://lists.swift.org/mailman/listinfo/swift-users>
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users