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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to