Any idea why Swift supports implicit casting to AnyHashable, but not to, say, 
AnySequence?

> > On Aug 18, 2016, at 9:54 AM, Adel Zhang via 
> > swift-users<swift-users@swift.org>wrote:
> > 
> > Any other situation when implicit type casting works?
> I don't know if there's a comprehensive list anywhere. Here are the ones I 
> can think of:
> 
> 1. A subtype can be used where a supertype is expected; for instance, you can 
> pass an `Int` to a parameter typed `Any` without a cast. The same is true of 
> superclasses: `NSString` can be used where `NSObject` is expected. Obvious, 
> but worth mentioning.
> 
> 2. Swift 3's `AnyHashable` isn't *really* a supertype of `Hashable` types, 
> but it's sort of treated as one.
> 
> 3. The built-in `Array`, `Dictionary`, `Set`, and `Optional` types can be 
> implicitly converted to the same data structure, but with supertypes of its 
> generic parameters. For instance, an `Array<Int>` can be passed to a 
> parameter of type `Array<Any>`. This is not a general feature of 
> generics—it's special-cased for these types.
> 
> 4. As you noticed, a type can be implicitly made more `Optional`; that is, 
> `Int` converts to `Optional<Int>`, `Optional<Optional<Int>>`, and so on.
> 
> 5. In Swift 2, importing Foundation activates many implicit conversions 
> between Foundation and Standard Library types, including conversions to 
> AnyObject. Many (perhaps all?) are gone in Swift 3. (However, Foundation 
> still has plenty of magical `as` casts.)
> 
> Hope this helps,
> --
> Brent Royal-Gordon
> Architechies
> 
> 
> 
> 
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to