我只需要倒数第二个元素,而不是最后两个元素,如下:
let streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let penultimate = streets.suffix(2)
print(penultimate) // ["Douglas", "Evarts"]
此外,我不想使用语法
streets[3]
,因为数组正在持续填充条目。extension BidirectionalCollection {
var elementBeforeLast: Element? {
return dropLast().last
}
}
使用方法:
if let elementBeforeLast = streets.elementBeforeLast {
print(elementBeforeLast) // "Douglas"
}
Collection
的解决方案。public extension Collection {
@inlinable
var penultimate: Element? {
guard let index = index(endIndex, offsetBy: -2, limitedBy: startIndex) else {
return nil
}
return self[index]
}
}
penultimate
变量,它的值是去掉最后一个元素后的streets
数组中的最后一个元素。 - rmaddysuffix
,在这种情况下他也应该知道first
。顺便说一句,虽然我同意关闭投票的人,但并不是我投的。 - Cristikstreets[streets.count-2]
以及你所遇到的问题(我的先前示例对于少于2个元素的数组是无效的)。另外,你可以参考以下链接了解更多信息:https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work 和 https://stackoverflow.com/help/someone-answers - Leo Dabus