【问题标题】:Most succinct if(last_item) in `for..in` loop`for..in` 循环中最简洁的 if(last item)
【发布时间】:2015-10-13 17:19:02
【问题描述】:

在 Liquid 等模板语言中,您可以使用 forloop.last 来查找 for 循环中的当前迭代是否是最后一次迭代。

在 Swift 上有类似的东西吗?最简洁的方法是什么?

【问题讨论】:

    标签: swift cocoa swift2


    【解决方案1】:

    在被枚举的事物上调用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")
        }
    }
    

    【讨论】:

    • 太棒了!发送!在 Swift 5 中,它现在被称为“枚举”,在 en(d) 处带有一个 d。
    【解决方案2】:

    在很多情况下,你可以通过for let x in xs.dropLast() 得到你想要的,然后专门处理最后一个。

    【讨论】:

      【解决方案3】:

      需要注意的是,这并不总是可能的:in 关键字右侧的“事物”是符合SequenceType 的值。这可能是一些“有限”容器,其中定义了元素的数量(正如@matt 在他的回答中使用的那样)。但它也可能是一个元素数量不限的序列,或者是一个未定义元素数量的容器。那么,就无法确定最后一个元素了。

      【讨论】:

      • 如果您可以提供无限数组的示例或无法确定元素数量,请投赞成票。
      • @ZoffDino 序列不仅仅是数组(它有一个 count 方法返回元素的数量)。无限序列的一个示例是具有生成素数的生成器。据我所知,没有最大素数;)或者,采用随机数生成器、循环位模式生成器等。
      【解决方案4】:

      也许你看起来像这样?我正在使用 xCode7

      var arr = ["cooper","ant","Yolo"]
      
      
      for i in arr
      {
         if i == arr.last
         {
              print("Win")
          }
      }
      

      我使用了array.last,它是一个数组具有的函数,您可以返回数组的最后一个元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 2022-12-02
        • 1970-01-01
        相关资源
        最近更新 更多