错误:在调用中缺少参数'makePetMakeNoise'的参数

时间:2015-06-18 05:35:19

标签: swift

您好我正在做一些Swift编码,我无法弄清楚如何摆脱这个错误:

  

在调用中缺少参数'makePetMakeNoise'的参数。

你能帮我解决这个错误吗?

import Foundation
import UIKit

class Human {
    static var numCreated:Int = 4
    var name:String = ""
    var pet:Pet

    init(name:String,pet:Pet){
        self.name = name
        self.pet = pet
        Human.numCreated++
    }
    func makePetMakeNoise(){ 
        var randomNumber = arc4random_uniform(9)
        self.pet.makeNoise(randomNumber) //Missing argument for parameter        'makePetMakeNoise' in call
    }

    func feedPet(){
        self.pet.eat
    }

    static func populationCount(){  
        println("Total population count is \(Human.numCreated)")
    } 
    }
    class Pet {
        var name:String = ""
        var noise:String = ""
        var canMakeNoise:Bool = true

    init(name:String,noise:String,canMakeNoise:Bool){
        self.name = name
        self.noise = noise
        self.canMakeNoise = canMakeNoise

    }

    func makeNoise(canMakeNoise: Int, makePetMakeNoise: Int){


        if self.canMakeNoise { 

            for _ in 1...5{
                println("\(self.name) \(self.noise)")

            }

        }else {
            println("\(self.name) *remains silent*")

        }

    }

    func eat(){
        println("\(name) is eating")
    }


    class Dog:Pet{
    }

    class Cat:Pet{
        override func eat {
            super.eat()
            println("I'm still hungry, meow")
        }
    }
    }

    //Pets
    var Tobie = Pet(name: "Tobie", noise: "Bark", canMakeNoise: true)
    var Bud = Pet(name: "Bud", noise: "Bark", canMakeNoise: false)
    var Ginger = Pet(name: "Ginger", noise: "bark", canMakeNoise: false)
    var Curry = Pet(name: "Curry", noise: "Bark", canMakeNoise: true)
    //Humans
    var Sam = Human(name: "Sam", pet: Tobie)
    var Mark = Human(name: "Mark", pet: Bud)
    var Spencer = Human(name: "Spencer", pet: Ginger)
    var Jessie = Human(name: "Jessie", pet: Curry)
    let Humans = [Sam, Mark, Spencer, Jessie]


    for Human in Humans {
        println("\(Humans) \(feedPet) \(makePetMakeNoise)") //Use of unresolved identifier 'feedPet and makePetMakeNoise'\\ 
    }




`

2 个答案:

答案 0 :(得分:1)

makeNoise定义的Pet方法有两个参数。问题是当你在给出错误的行中调用它时,你只传递一个参数。

可能的解决方案是: 更改Pet的方法如下:

func makeNoise(makePetMakeNoise: Int){


        if self.canMakeNoise {

            for _ in 1...5{
                println("\(self.name) \(self.noise)")

            }

        }else {
            println("\(self.name) *remains silent*")

        }

    }

更新代码,在Human中提供错误,如下所示:

func makePetMakeNoise(){
        var randomNumber = Int(arc4random_uniform(9))
        self.pet.makeNoise(randomNumber)
}

注意我将random转换为Int,因为这是预期的参数类型。

请考虑我只是猜测可能的修改,因为我不知道你的课程的用途......也许只是一个操场。

当你从人类调用宠物的方法时,其他解决方案有效地传递了两个参数。

希望这有帮助

答案 1 :(得分:1)

您的函数func makeNoise(canMakeNoise: Int, makePetMakeNoise: Int)需要两个参数,但您的通话randonNumber只传递self.pet.makeNoise(randomNumber)。它看起来应该是这样的:self.pet.makeNoise(randomNumber, someOtherNumber)