2016-10-08 4 views
0

Ich mache das für eine Klasse, also suche ich nicht jemanden, der das für mich programmiert, nur für eine kleine Anleitung. Mit swift3 in Xcode 8. fixierte ich die vorherigen Fehler und ich denke, ich Fortschritte machen werde, aber ...Swift Variable Erreichbarkeit

 

class Cat { 

     var catName, catBreed, catColor: String 
     var catAge, catWeight: Int 

     init(name:String, age:Int, weight:Int, breed:String, color:String) 

     { 
      catName = name 
      catAge = age 
      catWeight = weight 
      catBreed = breed 
      catColor = color 
     } 

    func calculateAge (catAge: Int) -> Int 
    { 
     var humanYears = 0 

     if catAge == 1 { 
      humanYears = 15 
     } else if catAge == 2 { 
      humanYears = 24 
     } else if catAge > 2 { 
      humanYears = (24 + (catAge * 4)) 
     } 
     print ("Your cat is \(humanYears) human years old!") 
     return humanYears 
    } 
    func createCats(name: String, age: Int, weight: Int, breed: String, color: String) -> String 
    { 
     let humanYears = calculateAge(catAge: age) 
     let catInfo : String = "\(name) is a \(color) \(breed) who weights \(weight) named \(name), and he is \(humanYears) human years old." 
     print (catInfo) 
     return catInfo 
    } 
    } 
Cat.createCats() 

ich bei Cat.createCats einen Fehler() unter Angabe Verwendung von Instanz Mitglieds createcats ' am Typ 'Katze'; meinst du, stattdessen einen Wert vom Typ 'Cat' zu verwenden?

Ich habe versucht, Katze setzen in der(), habe ich versucht, alle meine Variablen dort Namensgebung ...

+0

Wann erwarten Sie, dieser Druck-Anweisung auszuführen? Sie können nicht einfach einen Fließkomma-Code in einem Typ haben - Sie müssen ihn in eine Funktion einfügen. – Hamish

+0

"Print" über "Return HumanYears" setzen. Dann wird sehr zeit 'calculateAge' get called Nachricht wird gedruckt. – beeth0ven

+0

Hallo Hamish, ich erwarte, dass es am Ende der Funktion läuft. Ich habe versucht, es über die Rückkehr zu stellen, wie beethoven vorgeschlagen. Da ich das auf einem Spielplatz renne, habe ich etwas auf der Seitenleiste erwartet. Ich bekomme keine Fehler, aber auch keine Ergebnisse. –

Antwort

0

Wie ich in Ihrem Code zu sehen, werden Sie erneut erklärt die Variable „humanYears“. Einer ist unmittelbar nach der Klasse und der zweite ist in der Funktion "calculateAge". Bearbeiten Sie Ihre Funktion „berechnen“, wie nachstehend:

func calculateAge (catAge: Int) -> Int { 

     if catAge == 1 { 
      humanYears = 15 
     } else if catAge == 2 { 
      humanYears = 24 
     } else if catAge > 2 { 
      humanYears = (24 + (catAge * 4)) 
     } 
     return humanYears 
} 
+0

Ich habe einige Änderungen vorgenommen. Zusätzlich zur Berechnung der menschlichen Jahre muss ich in der Lage sein, eine Katze mit den Standardwerten zu instanziieren, aber auch eine Katze mit alternativen Werten zu instanziieren und jedes Mal die Katzendetails zu drucken. –

+0

nicht erhalten Sie Ihren Punkt, fügen Sie bitte den aktualisierten Code für mehr Verständnis – Harish

+0

Ich habe den ursprünglichen Beitrag aktualisiert, ist das nicht der richtige Weg, es zu tun? –

0

ich herausgefunden, was ich tat, falsch, dank euch und einem anderen Beitrag auf Stack-Überlauf, die ich gesucht nach oben. Für den Fall, dass es hier jemandem hilft, werde ich meinen endgültigen Code unten posten. Mein wichtigstes Problem war, dass ich versuchte, die Funktion aufzurufen, bevor ich eine Instanz der Klasse erstellte. Dies ist nicht die fertige Version der Lösung, aber ich war aufgeregt, dass ich es funktionierte, also wollte ich es veröffentlichen.

Nochmals vielen Dank für Ihre Hilfe,

class Cat 
{ 

    func calculateAge (catAge: Int) -> String 
{ 
    var humanYears = 0 

    if catAge == 1 { 
     humanYears = 15 
    } else if catAge == 2 { 
     humanYears = 24 
    } else if catAge > 2 { 
     humanYears = (24 + (catAge * 4)) 
    } 
    return "Your cat is \(humanYears) human years old!" 
} 

func createCats(name: String = "Fluffy", age: Int = 1, weight: Int = 3, breed:   String = "tabby", color: String = "brown") -> String 
{ 
    var catInfo : String 
    let humanYears = calculateAge(catAge: age) 
    catInfo = "\(name) is a \(color) \(breed) who weights \(weight) pounds  named \(name), and he is \(humanYears) human years old." 
    print (catInfo) 
    return catInfo 
} 
} 

let firstCat = Cat() 
firstCat.createCats() 
let secondCat = Cat() 
secondCat.createCats(name: "bob")