[swift-users] adopting RandomAccessCollection protocol

Don Giovanni don-giovanni at hotmail.com
Sun Mar 12 10:58:33 CDT 2017


public class Container2: RandomAccessCollection

{

public typealias Indices = DefaultRandomAccessIndices<Container2>;

public typealias Index = Int;

//typealias SubSequence = Container2;

public var arr:[Int] = [1,2,3,4,5];

public var endIndex: Index {

return 5;

}

public var startIndex:Index{

return 0;

}

public func index(after i: Int) -> Int{

return i+1;

}

public subscript(position: Int) -> Int{

get{

return arr[position];

} set{

arr[position] = newValue;

}

}

/*func index(before i: Int) -> Int{

return i-1;

}*/

public subscript(bounds: Range<Int>) -> Container2{

get{

return Container2();

} set{

}

}

}



I'm trying to adopt the RandomAccessCollection protocol from a class. I deliberately leave out the func index(before:) function because there is already a default implementation of that function in RandomAccessCollection. I do understand that that function's implementation is required because of BiDirectionalCollection from which RandomAccessCollection inherits.

My question is why would the compiler complain that func index(before:) implementation is required when there is already a default implementation in RandomAccessCollection that i can use?

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170312/7bb62a07/attachment.html>


More information about the swift-users mailing list