【问题标题】:swift sequenceType return nil快速序列类型返回零
【发布时间】:2015-01-02 12:37:13
【问题描述】:

我的对象符合SequenceType,所以实现了generate函数。 我的对象有一个可选对象,它有一个值数组 如果我有一个数组,我会通过生成器返回值,但如果没有值,则生成器必须返回 nil。我有下面的代码,但它相当冗长。有没有更好的方法来处理这个问题?

func generate() -> GeneratorOf<ValueType> {
    if let values = self.data.values
    {
        var index : Int = 0
        return GeneratorOf<ValueType> {
            return (index < values.count) ? values[index++] : nil
        }
    }
    //how to improve these lines (or wrap it into the code above?) This feels like repetition.
    return GeneratorOf<ValueType> { 
        return nil
    }
}

【问题讨论】:

    标签: swift sequence


    【解决方案1】:

    从您的可选values 创建一个可选生成器。然后使用可选链调用next

    func generate() -> GeneratorOf<ValueType> {
        var g = data.values?.generate()
        return GeneratorOf<ValueType> {
            return g?.next()
        }
    }
    

    如果生成器是nil,它只会在第一次调用时返回nil,否则它将返回values中的所有值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2016-02-25
      • 2017-11-23
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多