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= 中的所有值].
我的对象符合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= 中的所有值].