swift 序列类型 return 无

swift sequenceType return nil

我的对象符合SequenceType,所以实现了generate函数。 我的对象有一个可选对象,它有一个值数组 如果我有一个数组,我通过生成器 return 值,但是如果没有值,生成器必须 return 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
    }
}

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

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

如果生成器是 nil,它只会在第一次调用时 return nil,否则它将 return [=11= 中的所有值].