2014-09-28 52 views
3

我收到一个奇怪的错误,我不禁想到是编译器错误。在斯威夫特,在任何一个游乐场或iOS应用程序,如果我做了以下...

let array = [0, 1, 2, 3, 4, 5] 
let sum = array[0] + array[1] + array[2] + array[3] + array[4] + array[5] 

...我得到以下编译器错误。

cannot invoke '+' with an argument list of type '($T28, $T32)' 

只是为了咧嘴笑,我把它改为一个字符串数组,我得到了相同的结果。但是,如果我只是添加前五个值,则不会出现错误。撇开这不是总结这些数字的最佳方式的事实,这不是编译器错误?

如果它不是编译器错误,为什么不呢?

回答

4

如果您尝试创建一个整数数组:

let array:[Int] = [0, 1, 2, 3, 4, 5] 

我有同样的问题。我猜编译器不能识别你的数组值。

如果你使用:

let sum = Int(array[0]) + Int(array[1]) + Int(array[2]) + Int(array[3]) + Int(array[4]) + Int(array[5]) 

它按预期工作。

+0

谢谢你。有趣的方式来强制它。我希望有一种方法可以接受这两个答案,因为两者都证实了我的问题,即这是编译器错误。 – Mallioch 2014-09-29 01:21:29

+0

这个问题有更多的问题:http://stackoverflow.com/questions/26088184/could-not-find-member-subscript/26088212?noredirect=1#comment40880289_26088212 – 2014-09-29 01:56:53

相关问题