Okay I’m convinced on that one, but do we really want to give up being able to 
construct an instance from an metatype instance? (Personally I’d keep it as an 
optional feature.)

There are more than 7000 search results inside swift repository for .Type.

I looked up a few of them and I found an interesting example:

a = SomeClass.self
expectTrue(a as? Any.Type == SomeClass.self)
expectTrue(a as? AnyClass == SomeClass.self)
expectTrue(a as? SomeClass.Type == SomeClass.self)
After this proposal we had this:

a: Type<SomeClass> = SomeClass

// How can we cast from `Type<SomeClass>` to `Type<Any>`?
// Comparing two Type<T> is done with `hashValue` at least in my
// implementation.
expectTrue(a as? Type<Any> == SomeClass) // `SomeClass` equals 
`Type<SomeClass>()`

// How can we cast `Type<SomeClass>` to `AnyClass`?
expectTrue(a as? AnyClass == SomeClass)

// this is fine
expectTrue(a as? Type<SomeClass> == SomeClass)
Dynamic casts do not work with other instances of metatypes (I feel like there 
was a proposal for this, but I can’t find it). If we had this, we could fix the 
infix == function to compare metatypes instead the hash value.

What about dynamicType?

Any ideas?



-- 
Adrian Zubarev
Sent with Airmail

Am 13. Juli 2016 um 16:17:43, Anton Zhilin (antonyzhi...@gmail.com) schrieb:

2016-07-13 15:02 GMT+03:00 Adrian Zubarev via swift-evolution 
<swift-evolution@swift.org>:
To answer your question, we still need the metatype to access initializer and 
static member of that type. If we’d drop T.Type completely, we’d lose 
functionality to do so.

protocol A {
    init()
}

func foo<T : A>(metatype: T.Type) -> T {
    return metatype.init()
}
In such cases, we can always refer to the type directly:
func foo<T : A>(metatype: Type<T>) -> T {
    return T()
}
I would prefer to remove metatypes T.Type completely and replace them with your 
somewhat transparent Type<T>.
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to