Swift不能调用'*';具有类型为';(Int,Int)和"x27,;
所以我试着写一些基本的Swift,我写了:Swift不能调用'*';具有类型为';(Int,Int)和"x27,;,swift,Swift,所以我试着写一些基本的Swift,我写了: func timesByHundred(d: Int) { return d * 100 } 编译器说“不能用类型为“(Int,IntegerLiteralConvertible)”的参数列表调用“*”。所以我把它改成: func timesByHundred(d: Int) { let e: Int = 100 return d * e } 编译器说“不能用类型为“(Int,Int)”的参数列表调用“*”。如果不是两个整数
func timesByHundred(d: Int) {
return d * 100
}
编译器说“不能用类型为“(Int,IntegerLiteralConvertible)”的参数列表调用“*”。所以我把它改成:
func timesByHundred(d: Int) {
let e: Int = 100
return d * e
}
编译器说“不能用类型为“(Int,Int)”的参数列表调用“*”。如果不是两个整数,我还能乘什么??这里有一些类似的问题,但都有人试图对不同的类型进行操作。编译器错误具有误导性 真正的问题是您错过了函数返回类型的声明,因此编译器推断出
Void
,当尝试(并且失败)为返回Void
的*
找到合适的重载时,它会感到困惑
将您的函数更改为
func timesByHundred(d: Int) -> Int {
return d * 100
}
斯威夫特的编译器错误有时真的很可怕。它让我想起了20世纪80年代中期的C编译器。也许更糟,因为错误有时不仅仅是模糊的,而是完全错误的。@Duncac我同意。主要的问题是,它经常“太努力”使其编译,并且在类型推断太深时抛出错误。