gpt4 book ai didi

swift - 通过偏移量获取元素到序列中

转载 作者:行者123 更新时间:2023-11-28 15:24:56 25 4
gpt4 key购买 nike

假设我有这个序列:

let fibSequence = sequence(state: (0, 1), next: { (state) -> Int in
state = (state.1, state.0 + state.1)
return state.0
})

我可以做一些事情,比如获取前 5 个元素:

print(Array(fibSequence.prefix(5))) // => [1, 1, 2, 3, 5]

但是我怎样才能索引为 5 的元素(第 6 个元素)? (如果序列在第 5 个元素之前终止,则返回 nil。)我能想到的最好的办法是:

print(fibSequence.dropFirst(5).makeIterator().next() as Any) // => Optional(8)

是否有内置方法来执行这样的操作?

最佳答案

我认为您的想法是正确的,目前没有一种方法可以索引序列,但是通过对序列的扩展可以很容易地实现它:

extension Sequence {
subscript(index: Int) -> Self.Iterator.Element? {
return enumerated().first(where: {$0.offset == index})?.element
}
}

这意味着您可以像这样轻松地索引序列:

print(fibSequence[8])

或者我发现你可以使用这个逻辑来索引一个特定的元素,它删除了对 Any 警告的强制转换

let fibSequence = sequence(state: (0, 1), next: { (state) -> Int in
state = (state.1, state.0 + state.1)
return state.0
})
print(fibSequence.enumerated().first(where: {$0.offset == 5})?.element)

关于swift - 通过偏移量获取元素到序列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com