Ich versuche, eine Funktion, die einen generischen Parameter verwendet, einer Variablen zuzuweisen.Zuweisen einer Funktion mit generischem Parameter zu einer Variablen
Ich habe eine Klasse, Lautsprecher, mit einer Funktion, saySomething. Die saySomething Funktion soll als Parameter eines beliebiges Objekt entspricht, das Protokoll SpeakProtocol nehmen:
class Loudspeaker {
func saySomething<T:SpeakProtocol> (speaker:T) {
print("\(speaker.thinkOfSomethingToSay())")
}
}
protocol SpeakProtocol {
func thinkOfSomethingToSay() -> String
}
Die ThingSayer Klasse implementiert SpeakProtocol:
class ThingSayer:SpeakProtocol {
func thinkOfSomethingToSay() -> String {
return "Hello"
}
}
Ich erstelle ein neues Mitglied der Lautsprecherklasse:
var aLoudspeaker:Loudspeaker
Und ich würde die saySomething-Funktion (nicht das Ergebnis dieser Funktion) auf eine Variable zuweisen:
var speakFunction = aLoudspeaker.saySomething
dann würde ich diese Funktion an anderer Stelle aufrufen, indem Sie einen ThingSayer Erstellen und nebenbei, dass zu speakFunction:
var aSpeaker:Thingsayer
speakFunction(speaker:thingSayer)
Das Problem mit dieser Linie ist:
var speakFunction = aLoudspeaker.saySomething
Was mich einen Fehler gibt: "Generischer Parameter 'T' konnte nicht abgeleitet werden."
Ich habe schon lange mit dem Kopf gegen eine Wand geschlagen. Gibt es eine Möglichkeit, das zu tun, was ich versuche?
Dies ist offensichtlich ein künstliches Beispiel, aber der Kern des Problems ist, dass ich eine Funktion habe, die einen generischen Parameter nimmt, und ich möchte diese Funktion einer Variablen zuweisen an anderer Stelle in meinem Code aufgerufen werden. Jede Hilfe würde sehr geschätzt werden.
Mögliches Duplikat von [Ist es möglich, einer Variablen eine generische Funktion zuzuweisen?] (Http://stackoverflow.com/questions/40694060/is-it-possible-to-assign-a-generic-function-to) -a-variable) – dfri
Ja, das scheint das gleiche Problem zu sein. – Mike