Swift 快速错误“;无法调用';制造噪音';参数类型为';((UInt32))和#x27&引用;
我一直在做一些快速编码,得到了“不能用参数类型“((UInt32))”调用“makeNoise”。以下是完整的代码:Swift 快速错误“;无法调用';制造噪音';参数类型为';((UInt32))和#x27&引用;,swift,Swift,我一直在做一些快速编码,得到了“不能用参数类型“((UInt32))”调用“makeNoise”。以下是完整的代码: func makePetMakeNoise(){ var randomNumber = arc4random_uniform(9) self.pet.makeNoise(randomNumber) 我正在使用arc4random\u uniform(9)生成一个介于1和9之间的随机数。如何修复错误?您的方法调用返回一个Int,但它不接受一个In
func makePetMakeNoise(){
var randomNumber = arc4random_uniform(9)
self.pet.makeNoise(randomNumber)
我正在使用
arc4random\u uniform(9)
生成一个介于1和9之间的随机数。如何修复错误?您的方法调用返回一个Int,但它不接受一个Int。虽然,你从来没有真正从它回来。根据您在这里的情况,您的电话应该是:
self.pet.makeNoise()
方法声明应为:
func makeNoise()
{
//Your if statement that prints stuff.
}
arc4random\u uniform(UInt32)
将一个UInt32
作为参数,并返回一个UInt32
,该参数与函数所采用的参数不同。根据您提供的函数,它不接受参数,因此不起作用。使函数采用Int
(并进行相应调整)或UInt32
作为参数,然后使用该参数。我不太清楚你想用Bool(canMakeNoise)
做什么,但我想你想用给定的值检查随机数
功能:
func makeNoise(x: Int) {
if x == 0 { // Or some value the pet can make
println("(name) (noise)")
} else {
println("(name) remains silent")
}
}
电话:
show makeNoise definitionOk这里是:func makeNoise()->Int{if Bool(canMakeNoise)==true{println((name)(noise)}否则如果Bool(canMakeNoise)==false{println((name)保持沉默”)}您的函数不接受参数,因此尝试传递参数将导致错误。因此makeNoise方法不接受任何参数。当然你不能调用itThanks-Ian,有没有办法把这些东西放到init方法中?代码:init(name:String,noise:String,canMakeNoise:Bool){self.name=name-self.noise=noise-self.canMakeNoise=canMakeNoise}
let x = Int(arc4random_uniform(5)) // This is now an Int not a UInt32
makeNoise(x)