【问题标题】:Swift: Subscript with Ranges errorSwift:带有范围错误的下标
【发布时间】:2016-01-26 10:04:43
【问题描述】:

我正在使用 Swift 中的下标,遵循《精通 Swift 2》一书:

// SUBSCRIPTS WITH RANGES

struct MathTableWithRanges{
    var num : Int

    subscript(index : Int)->Int{
         return num * index
    }

    subscript(aRange: Range<Int>)->[Int]{

       var retArray : [Int] = []
       for i in aRange{
           retArray.append(self[i])
       }
       return retArray
    }
}

// Test code

var table = MathTable(num: 5)
var myRange : Range<Int> = 2...5
print(table[myRange])

预期输出:10,15,20,25

错误:无法将 Range 类型的值转换为预期的参数类型 Int

注意:如果我对 Range 进行硬编码:

print(table[2...5]) 

我得到一个不同的错误: 二元运算符“...”不能应用于两个 Int 操作数

【问题讨论】:

  • 您的代码对我有用,使用正确的类名时没有错误。 (screenshot)。检查你的 Xcode 版本号,至少应该是 7。

标签: swift range


【解决方案1】:

我没有你正在使用的书,但是这一行:

var table = MathTable(num: 5)

应该是这样的:

var table = MathTableWithRanges(num: 5)

【讨论】:

  • 哎呀!!!!不敢相信!我的代码中有几个结构,当您正确发现时,我指向了错误的结构!!!谢谢
猜你喜欢
  • 1970-01-01
  • 2017-02-10
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2019-11-11
  • 1970-01-01
相关资源
最近更新 更多