[swift-users] Strange type error

Howard Lovatt howard.lovatt at gmail.com
Mon Mar 21 17:23:38 CDT 2016


Hi,

I don't understand your comment, can you explain some more please?

Thanks,

 -- Howard.

On Monday, 21 March 2016, zh ao <owenzx at gmail.com> wrote:

> 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
> <javascript:_e(%7B%7D,'cvml','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
>> <javascript:_e(%7B%7D,'cvml','swift-users at swift.org');>
>> https://lists.swift.org/mailman/listinfo/swift-users
>>
>>
>

-- 
-- Howard.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160322/271df625/attachment.html>


More information about the swift-users mailing list