Schneller Fehler: Variable, die innerhalb ihres eigenen Anfangswertes verwendet wird

71

Wenn ich eine Instanz einer Entität initialisiere, wird der Fehler angezeigt Variable used within its own initial value.

Hier ist der Code, der den Fehler auslöst:

class func buildWordDefinition (word:String, language:Language, root:TBXMLElement) -> WordDefinition
    {
        let word = WordDefinition(word: word, language: language)

Der Fehler zeigt auf die wordVariable.

Hier ist die WordDefinition-Klasse:

class WordDefinition {
    let word: String
    let language: Language

    init(word: String, language:Language)
    {
        self.word = word
        self.language = language
    }
}

Was bedeutet dieser Fehler?

Francescu
quelle
1
Vielleicht solltest du das Objekt nicht aufrufen word?
Meda

Antworten:

74

Sie deklarieren eine Konstante mit dem Namen wordund versuchen, das gleichnamige Argument zum Initialisieren zu verwenden. Der Compiler versucht, die gerade deklarierte Konstante zu verwenden, um einen eigenen Anfangswert zuzuweisen, anstatt das Argument zu verwenden.

Cezar
quelle
22

Ich habe denselben Fehler konfrontiert , wenn verpassten wenn während der Text auszupacken.

Geben Sie hier die Bildbeschreibung ein

Durch Hinzufügen, falls oben behoben.

Geben Sie hier die Bildbeschreibung ein

Shrawan
quelle
4
Danke, hatte den gleichen dummen Fehler und konnte ihn nicht sehen: P
Roland T.
11

Sie definieren eine Konstante neu word, die denselben Namen wie ein Parameter in Ihrer Funktion hat

class func buildWordDefinition (word:String, language:Language, root:TBXMLElement) -> WordDefinition
{
    // same name as the parameter here
    let word = WordDefinition(word: word, language: language)
}
Stange
quelle
5

Sie haben einen Funktionsparameter wordim Gültigkeitsbereich und versuchen, eine Konstante mit demselben Namen zu erstellen. Nennen Sie Ihre Konstante etwas anderes als word.

gwcoffey
quelle