CountableRange的startIndex和lowerBound有什么区别?

Wil*_*ken 2 collections range swift

文档说

关联的Bound类型是CountableRange的元素和索引类型。范围的每个元素都是其自己对应的索引。CountableRange实例的下限是其开始索引,上限是其结束索引。

var lowerBound: Bound { get } 被宣布

var lowerBound: Bound
The range's lower bound.

In an empty range, lowerBound is equal to upperBound.

Declaration
var lowerBound: Bound { get }
Run Code Online (Sandbox Code Playgroud)

var startIndex: Bound { get } 被宣布

var startIndex: Bound
The position of the first element in a nonempty collection.

If the collection is empty, startIndex is equal to endIndex.

Declaration
var startIndex: Bound { get }
Run Code Online (Sandbox Code Playgroud)

两者之间有什么区别,我该如何决定使用哪一个呢?

Ped*_*lho 5

lowerBoundstartIndex是一个完全等效CountableRange,因为是upperBoundendIndex,如由文档指出:

CountableRange实例的下限是其开始索引,上限是其结束索引。

为什么的唯一原因CountableRange提供两个属性是startIndexendIndex由所需要的Collection协议,而lowerBoundupperBound通用于所有类型的范围(即:CountableRange,CountableClosedRange等)。