【发布时间】:2015-10-13 17:19:02
【问题描述】:
在 Liquid 等模板语言中,您可以使用 forloop.last 来查找 for 循环中的当前迭代是否是最后一次迭代。
在 Swift 上有类似的东西吗?最简洁的方法是什么?
【问题讨论】:
在 Liquid 等模板语言中,您可以使用 forloop.last 来查找 for 循环中的当前迭代是否是最后一次迭代。
在 Swift 上有类似的东西吗?最简洁的方法是什么?
【问题讨论】:
在被枚举的事物上调用enumerate() 以获取索引号和值的元组。现在您可以检查索引号,看看您现在正在处理哪一个。
let arr = ["hey", "ha", "ho"]
for (ix,what) in arr.enumerate() {
print(what)
if ix == arr.count-1 {
print("that was the last one")
}
}
【讨论】:
在很多情况下,你可以通过for let x in xs.dropLast() 得到你想要的,然后专门处理最后一个。
【讨论】:
需要注意的是,这并不总是可能的:in 关键字右侧的“事物”是符合SequenceType 的值。这可能是一些“有限”容器,其中定义了元素的数量(正如@matt 在他的回答中使用的那样)。但它也可能是一个元素数量不限的序列,或者是一个未定义元素数量的容器。那么,就无法确定最后一个元素了。
【讨论】:
count 方法返回元素的数量)。无限序列的一个示例是具有生成素数的生成器。据我所知,没有最大素数;)或者,采用随机数生成器、循环位模式生成器等。
也许你看起来像这样?我正在使用 xCode7
var arr = ["cooper","ant","Yolo"]
for i in arr
{
if i == arr.last
{
print("Win")
}
}
我使用了array.last,它是一个数组具有的函数,您可以返回数组的最后一个元素。
【讨论】: