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@swift.org https://lists.swift.org/mailman/listinfo/swift-users