首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 3中的ClosedRange和数组订阅

Swift 3中的ClosedRange和数组订阅
EN

Stack Overflow用户
提问于 2016-11-02 12:49:56
回答 1查看 1.4K关注 0票数 2

我正在将我的代码转换为Swift 3,只剩下3个构建时错误,其中2个与我不了解范围现在是如何工作有关。例如,我有:

代码语言:javascript
复制
func shuffle( _ tenseArray: [ Tense ], ...

    var indices = [ Int ]()
    for tense in tenseArray {
        if let aRange = tenseRange[ tense ] { 
            indices.append( aRange )
        }
    }

其中Tense是一个类似于以下内容的枚举:

代码语言:javascript
复制
 enum Tense: String {
    case IndicativePresent = "Indicative Present"
    case IndicativePreterite = "Indicative Preterite"
    case IndicativeImperfect = "Indicative Imperfect"
    ...

tenseRange的定义为:

代码语言:javascript
复制
var tenseRange: [ Tense : ClosedRange<Int> ] = [:] // maps Tense enums to ranges of tense indices

人口是这样的:

代码语言:javascript
复制
tenseRange[ Tense.IndicativePresent ] = ( 11 ... 16 )
tenseRange[ Tense.IndicativePreterite ] = ( 17 ... 22 )
tenseRange[ Tense.IndicativeImperfect ] = ( 23 ... 28 )
...

用于func shuffle中的行

代码语言:javascript
复制
indices.append( aRange )

我得到的错误是不能用'CountableRange'类型的索引订阅'Int‘类型的值。我真的很想把这些范围转换成ints,以便在数组的索引中使用,就像我以前在Swift中所做的那样,但是我似乎不知道怎么做。有什么想法吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 12:50:43

您将您的indices声明为Array of Int,因此不能将append(_:)用于ClosedRange<Int>

因此,我假设您希望将ClosedRange中的所有值附加到indices中。

在这种情况下,您可能需要使用append(contentsOf:),而不是append(_:)

数组

..。 函数附加(元素) 在数组末尾添加一个新元素。 ..。 函数附录(contentsOf: C) 将集合的元素添加到数组的末尾。 函数附录(contentsOf: S) 将序列的元素添加到数组的末尾。

不幸的是,在Swift 3中,CountableRange<T>既不是集合也不是序列。

但是Swift 3引入了一个新的范围族类型,CountableClosedRange<T>CountableRange<T>,它们都是Collection。结果类型的封闭范围运算符...可以是一个CountableClosedRange<T>当放置在一个特定的上下文。

代码语言:javascript
复制
        indices.append(contentsOf: aRange.lowerBound...aRange.upperBound)

否则,您可以将tenseRange的值声明为CountableClosedRange<Int>

代码语言:javascript
复制
var tenseRange: [ Tense : CountableClosedRange<Int> ] = [:]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40380391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档