2017-06-30 3 views
0

Swift Playground stellte den folgenden Code zur Verfügung. Wie wird der speakText (graphic:) aufgerufen, ohne dass Parameter übergeben werden? (Natürlich wird Grafik bereits in einem anderen Segment des Code platziert)Wie ist es möglich, eine Funktion mit Parametern aufzurufen, ohne Werte zu übergeben? [Swift Playground]

// Speak the text of graphic. 
func speakText(graphic: Graphic) { 
    speak(graphic.text) 
} 
func addGreeting(touch: Touch) { 
    if touch.previousPlaceDistance < 60 { return } 
    let greetings = ["howdy!", "hello", "hi", "ciao", "yo!", "hey!",  "what’s up?"] 
    let greeting = greetings.randomItem 
    let graphic = Graphic(text: greeting) 
    graphic.textColor = #colorLiteral(red: 0.9686274529, green: 0.78039217, blue: 0.3450980484, alpha: 1) 
    graphic.fontName = .chalkduster 
    scene.place(graphic, at: touch.position) 
    graphic.rotation = randomDouble(from: -30, to: 30) 
} 
// Create and add Speak tool. 
let speakTool = Tool(name: "Speak", emojiIcon: "") 
speakTool.onGraphicTouched = speakText(graphic:) 
scene.tools.append(speakTool) 

Antwort

1

speakTool vom Typ Tool, die eine Eigenschaft hat onGraphicTouched, die vom Typ ist (Graphic) ->(), die eine Funktion/Verschluss, die ein Graphic als Eingabe und gibt nichts (Void oder ()).

speakText(graphic:) ist ein Funktionszeiger auf Ihre oben definierte Funktion. Beachten Sie, dass diese Funktion die erforderliche Signatur besitzt. es dauert eine Graphic und gibt nichts zurück.

So speakTool.onGraphicTouched = speakText(graphic:) weist einen Zeiger auf die Funktion onGraphicTouched und wenn die Grafik berührt wird, wird die speakToolonGraphicTouched(someGraphic) nennen, die speakText(graphic: someGraphic) nennen.

Sie können im Abschnitt über Funktionstypen in Apple's Swift Guide.

+0

Thx mehr darüber lesen! Kennen Sie eine Dokumentation oder eine Referenz, wo ich mehr über dieses Thema lesen kann? –

+0

Schauen Sie sich den Abschnitt zu den Funktionstypen an: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID158 – vacawama

Verwandte Themen