加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以实现包含nil元素的Swift SequenceType?

发布时间:2020-12-14 05:32:01 所属栏目:百科 来源:网络整理
导读:我想实现一个可以包含nil元素的自定义可迭代类,类似于[Any?].符合SequenceType主要是有效的,除了GeneratorType.next()的契约,它表示当所有元素都用尽时它应该返回nil.有解决方法吗? 这是一个(非常愚蠢)的例子: struct OddSequence : SequenceType { func
我想实现一个可以包含nil元素的自定义可迭代类,类似于[Any?].符合SequenceType主要是有效的,除了GeneratorType.next()的契约,它表示当所有元素都用尽时它应该返回nil.有解决方法吗?
这是一个(非常愚蠢)的例子:
struct OddSequence : SequenceType {

    func generate() -> GeneratorOf<Int?> {
        var current = 0
        return GeneratorOf<Int?>() {
            if current >= 6 {
                return nil
            }
            current++
            if current % 2 == 0 {
                return current
            } else {
                return Optional(nil)
            }
        }
    }
}


for x in OddSequence() {
    println(x)
}

输出:

nil
Optional(2)
nil
Optional(4)
nil
Optional(6)

生成器为每个元素返回一个可选的(可以是Optional(nil)),
如果序列耗尽则为零.

另请参阅Swift博客中的“Optionals Case Study: valuesForKeys”,了解nil和.之间的区别
可选(零)及其应用程序.

Swift 2更新:

struct OddSequence : SequenceType {

    func generate() -> AnyGenerator<Int?> {
        var current = 0
        return anyGenerator {
            if current >= 6 {
                return nil
            }
            current++
            if current % 2 == 0 {
                return current
            } else {
                return Optional(nil)
            }
        }
    }
}

for x in OddSequence() {
    print(x)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读