2013-11-01 8 views
5

Ich versuche, den folgenden Code zu kompilieren:Undeclared Feld in ererbten Typ kompilieren Nimrod Programm

type 
    TPerson = object of TObject 
    name*: string 
    age: int 

    TStudent = object of TPerson 
    id: int 

var 
    student: TStudent 
    person: TPerson 

student = TStudent(name: "Anton", age: 5, id: 2) 

aber ich bekomme die folgende Fehlermeldung:

Error: undeclared field: 'id'

Wie wird id nicht erklärt? Das Codebeispiel stammt direkt aus dem Lernprogramm. Hat sich etwas in der Sprache geändert, das sich im Lernprogramm nicht widerspiegelt?


Auch, wenn ich versuche, den folgenden Code auszuführen:

student = TStudent(name: "Anton") 
echo student.name 

bekomme ich folgende Fehlermeldung:

SIGSEGV: Illegal storage access. (Attempt to read from nil?)

Warum?

Antwort

3

Ich fürchte, Sie verwenden wahrscheinlich die letzte stabile Version von Nimrod (Version 0.9.2 wurde im Mai 2013 veröffentlicht) oder eine alte Git-Checkout, was Sie markieren, sind Fehler im Compiler. Gerade jetzt mit git Version https://github.com/Araq/Nimrod/commit/75ca6eb34fbc983d88961664fd1cfce5f8b44abf funktionieren sowohl Ihr erstes als auch letztes Beispiel ohne Probleme. In den letzten Monaten wurden mehrere Fehler in Bezug auf die Objektvererbung in der Sprache behoben (issue 179, issue 520, issue 575 und issue 563).

Wenn Sie sich entscheiden, eine Git-Version zu erstellen (es ist überhaupt nicht gruselig, obwohl es manchmal Regressionen in der Sprache gibt) bitte use the build instructions from the git, da die Website möglicherweise noch nicht aktualisiert wurde.

+0

Gefunden jemanden mit dem gleichen Problem auf den [Nimrod Foren] (http://forum.nimrod-code.org/t/285) – sloth