[swift-users] Why can't I declare subscript<T> ?

Trent Nadeau tanadeau at gmail.com
Mon Apr 11 16:08:31 CDT 2016


This is a known language limitation. See
https://bugs.swift.org/browse/SR-115. It looks like someone started to
implement it, but it has been dormant since December.

On Mon, Apr 11, 2016 at 5:04 PM, Jens Alfke via swift-users <
swift-users at swift.org> wrote:

> Why can't a custom subscript operator be made generic? That is, Swift
> allows this inside a class/struct:
>         func get<T>(key: String) -> T? { … }
> but it doesn’t allow
>         subscript<T>(key: String) -> T? { … }           // syntax error at
> the “<"
>
> This doesn’t make sense to me, since subscripts are just syntactic sugar;
> the subscript operator ought to support whatever a named function can
> support.
>
> In this case I’m implementing a class that contains a JSON payload, and I
> want clients to be able to flexibly access properties of the JSON and
> assign them to values, with implicit type-casting, i.e.
>         var name: String = revision[“name”]     // invoke subscript with
> T=String
>         var age: Int = revision[“age”]          // invoke subscript with
> T=Int
> (I got this idea from the Tailor library, although it doesn’t use
> subscripts, for reasons I now understand.)
>
> —Jens
>
> PS: I’m using Xcode 7.3; I believe that’s Swift 2.2?
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>



-- 
Trent Nadeau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160411/3e89c71f/attachment.html>


More information about the swift-users mailing list