> On 9 Jun 2016, at 9:55 PM, Adrian Zubarev via swift-evolution 
> <[email protected]> wrote:
> 
>> On 9 Jun 2016, at 9:23 PM 
>> <http://airmail.calendar/2016-06-09%2021:23:00%20MESZ>, Adrian Zubarev via 
>> swift-evolution <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> So what is the counterpart to AnyClass aka. AnyObject.Type for AnyValue? 
>> There is no and I don’t see any good name for it.
>> 
>> You could just use AnyValue.Type?
> 
> So basically you’re for consistency for `AnyValue` but not for current 
> `AnyObject`.
> 
> It’s clear that `AnyValue` can represent more than one value type, where 
> `AnyObject` can only represent one reference type (class). IMO for 
> consistency it should be named as `AnyClass`.
> 
There could be one day more than one reference type, and AnyObject could also 
work with that.

>> More confusion with generalized existentials:
>> 
>> Any<class> vs. AnyClass aka AnyObject.Type
>> Any<class> makes it crystal clear that you’re using an instance of a class 
>> not an instance of .Type. It should be consistent.
>> 
>> Any<…> would be used for any of a certain type. So Any<class> to me says 
>> ‘any of class’, not ‘any class’. Whereas AnyClass says to me literally ‘any 
>> class’.
> 
> `Any<class>` and `AnyClass` should be the same otherwise it will lead to 
> confusion!
> 
If Any<class> was introduced, then I’d advocate for it being an outright 
replacement and just removing AnyObject.
> If someone is new to the language and reads `AnyObject.Type` its not clear 
> that a `.Type` instance of a class is meant, because its not clear what 
> `Object` might be. 
> 
> If then you also have existentials with any-class requirements and `AnyClass` 
> typealias which is `AnyObject.Type` it would definitely lead to confusion 
> between:
> 
> func foo(value: AnyClass & SomeProtocol) // this would be illegal with 
> current implementation
> 
> vs.
> 
> func foo(value: Any<class> & SomeProtocol)
> 
> If one would want to use a `.Type` instance then should always type out 
> `.Type` suffix after your type name: `AnyClass.Type` == any `.Type` instance 
> of any class
> 
> I'm strongly against keeping `AnyClass` as an alias for `AnyObject.Type`, I’d 
> consider to keep only `AnyObject` but if `Any<>` existentials were to come 
> we’d get this mismatch:
> 
> typealias AnyObject = Any<class>
> 
> -- 
> Adrian Zubarev
> Sent with Airmail
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to