swift sequenceType返回零
我的对象符合SequenceType,因此它实现了generate函数。 我的对象有一个可选对象,它有一个值数组 如果我有一个数组,我通过生成器返回值,但是如果没有值,生成器必须返回nil。我有下面的代码可以工作,但它相当冗长。有没有更好的方法来处理这个问题swift sequenceType返回零,swift,sequence,Swift,Sequence,我的对象符合SequenceType,因此它实现了generate函数。 我的对象有一个可选对象,它有一个值数组 如果我有一个数组,我通过生成器返回值,但是如果没有值,生成器必须返回nil。我有下面的代码可以工作,但它相当冗长。有没有更好的方法来处理这个问题 func generate() -> GeneratorOf<ValueType> { if let values = self.data.values { var index : Int
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
}
}
func generate()->GeneratorOf{
如果let values=self.data.values
{
var指数:Int=0
返回发生器{
返回(索引
从可选的值创建可选的生成器。然后使用可选链接调用next
:
func generate() -> GeneratorOf<ValueType> {
var g = data.values?.generate()
return GeneratorOf<ValueType> {
return g?.next()
}
}
func generate()->GeneratorOf{
var g=data.values?.generate()
返回发生器{
返回g?.next()
}
}
如果生成器为nil
,它将在第一次调用时返回nil
,否则它将返回值中的所有值