2016-01-26 85 views
0

我在斯威夫特打標,這本書 「精通斯威夫特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

注意:如果我硬編碼範圍:

print(table[2...5]) 

我得到不同的錯誤: 二元運算符「...」不能被應用到兩個操作數詮釋

+0

您的代碼工作對我來說,沒有錯誤時使用正確的類名。 ([屏幕快照](https://www.evernote.com/l/AOwIY_SP5VFAVqsplnj32XCzAC_gwood_No))。檢查你的Xcode版本號,至少應該是7. – Moritz

回答

0

我沒有得到你所使用的書,但此行:

var table = MathTable(num: 5) 

也許應該是這樣的:

var table = MathTableWithRanges(num: 5) 
+0

ooooops !!!!!不敢相信!我在我的代碼中有幾個結構,當你正確地發現了時,我指向了錯誤的結構!謝謝 –