[swift-users] Strange type error

zh ao owenzx at gmail.com
Mon Mar 21 04:16:24 CDT 2016


You protocol is not defined properly.

On Mon, Mar 21, 2016 at 7:08 AM, Howard Lovatt via swift-users <
swift-users at swift.org> wrote:

> HI,
>
> Does anyone know what is happening here:
>
> protocol Subscriptable {
>
>     associatedtype Element
>
>     associatedtype Index
>
>     var firstIndex: Index { get }
>
>     var lastIndex: Index { get }
>
>     subscript(index: Index) -> Element { get set }
>
> }
>
>
> struct AllSubscriptable<E, I>: Subscriptable {
>
>     typealias Element = E
>
>     typealias Index = I
>
>     let firstIndexee: () -> I
>
>     let lastIndexee: () -> I
>
>     let subscriptee: (index: I) -> E
>
>     let setSubscriptee: (index: I, element: E) -> Void
>
>     var firstIndex: I { return firstIndexee() }
>
>     var lastIndex: I { return lastIndexee() }
>
>     subscript(index: I) -> E {
>
>         get { return subscriptee(index: index) }
>
>         set { setSubscriptee(index: index, element: newValue) }
>
>     }
>
> }
>
>
> extension Array {
>
>     var asScriptable: AllSubscriptable<Element, Int> {
>
>         return AllSubscriptable(
>
>             firstIndexee: { return self.startIndex }, // Error: Cannot
> convert `() -> Int` to expected `() -> _`
>
>             lastIndexee: { return self.endIndex },
>
>             subscriptee: { return self[$0] },
>
>             setSubscriptee: { self[$0] = $1 }
>
>         )
>
>     }
>
> }
>
>
> The error, "Cannot convert `() -> Int` to expected `() -> _`", on the
> `firstIndexee` closure is very strange since the types are correct and the
> same as `lastIndexee` which does not have an error.
>
> Also if the set subscript in Subscriptable and then all the other set
> support in AnySubscriptabe and in the extension is removed, then no error.
>
> Any clues to why?
>
> -- Howard.
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160321/fb5c91f4/attachment.html>


More information about the swift-users mailing list