2017-02-28 1 views
0

Entschuldigung für den zugegebenermaßen groben Titel, aber ich nehme einen Kurs für Swift auf teamtreehouse.com, und ich habe eine "Code Challenge" gemacht, die den Object-Oriented Swift-Kurs rekapituliert. Wie auch immer, ich wurde ein paar Klassen zur Verfügung gestellt und mein Ziel war es, die Machine-Klasse zu unterklassifizieren und die Methode zu überschreiben, um tatsächlich etwas zu tun, was ich tat. Ich bestand die Herausforderung, war aber neugierig, ob ich tatsächlich das Endergebnis dieser Funktion nach dem Eingeben eines Parameters drucken könnte.Wie kann ich das Endergebnis dieser Methode in Swift drucken?

class Point { 
    var x: Int 
    var y: Int 

    init(x: Int, y: Int) { 
     self.x = x 
     self.y = y 
    } 
} 

class Machine { 
    var location: Point 

    init() { 
     self.location = Point(x: 0, y: 0) 
    } 

    func move(_ direction: String) { 
     print("Do nothing! I'm a machine!") 
    } 
} 

// Enter your code below 

class Robot: Machine { 
    override func move(_ direction: String) { 
     switch direction { 
     case "Up": location.y += 1 
     case "Down": location.y -= 1 
     case "Left": location.x -= 1 
     case "Right": location.x += 1 
     default: break 
     } 

    } 
} 

let aRobot = Robot() 
aRobot.move("Up") 
print(aRobot.location) 

So, die letzten drei Zeilen sind mein Versuch, dies tatsächlich zu verwalten, aber in der Konsole, die Zeile „Point“ gedruckt wird und nicht das tatsächliche Ergebnis des Verfahrens in Kraft gesetzt werden. Ich möchte, dass das Ergebnis möglichst in Form von Koordinaten gedruckt wird. Sorry für den möglicherweise schlechten Code, ich bin nur ein Anfänger. Danke im Voraus!

+0

Nun zu implementieren, ich habe es geschafft, einen Weg finden, um es um das Ergebnis zu drucken, indem Sie die Point-Klasse als Ganzes zu entfernen und die gespeicherte Eigenschaft Lokationstyp Ändern zu '(x: Int, y: Int)' und dann das gleiche für die init-Methode, aber ich bin immer noch neugierig, ist es möglich, immer noch mit der Point-Typ –

Antwort

0

Um einen Typ in swift drucken zu können, sollte dieser Typ dem Protokoll CustomStringConvertible entsprechen. Dieses Protokoll hat nur eine Anforderung, eine description var

extension Point: CustomStringConvertible { 
var description: String { 
    return "(\(x), \(y))" 
} 
} 
+0

So würde ich nur diesen Code implementieren, bevor ich versuche zu drucken es? –

+0

Überall in der Quelle ist in Ordnung. – tomahh

Verwandte Themen