Swift错误类型'T'不符合协议'IntegerLiteralConvertible'

时间:2014-08-14 18:55:06

标签: compiler-errors swift tuples

我想用下面的代码片段将一个数字分解为其主要因子,但我不完全理解给定的错误消息(参见上面的标题)。首先,我尝试使用词典,但我仍然坚持按键对字典进行排序。其次我尝试了元组版本,但现在我遇到了编译错误。

任何人都可以在下面的代码片段的最后一行看到错误吗?

var pfc : [(prime: Int, count: Int)] = []
pfc.append(prime: 2, count: 2)
pfc += [(prime: 3, count: 4)]
var p = 5, c = 1
pfc.append(prime: p, count: c)

在堆栈溢出中可以找到关于String.Index的类似问题,但答案还没有给我足够的线索。所以任何帮助都会非常受欢迎,提前谢谢!

2 个答案:

答案 0 :(得分:5)

这非常有趣,似乎Nate提到的马车。我能够通过一些不同的语法解决它。

var pfc : [(prime: Int, count: Int)] = []

pfc.append(prime: 2, count: 2)

pfc += [(prime: 3, count: 4)]

var p = 5
var c = 1

var tuple = (prime: p, count: c)

pfc += [tuple]

pfc

答案 1 :(得分:0)

我认为你应该将元组放在两组括号中,而不只是一组。

var pfc : [(prime: Int, count: Int)] = []
pfc.append((prime: 2, count: 2))
pfc += [(prime: 3, count: 4)]
var p = 5, c = 1
pfc.append((prime: p, count: c))

我认为编译器认为您想调用名为Array.append(prime: Int, count: Int)的方法,但找不到类型Array

的方法