2013-11-01 14 views
5

我嘗試編譯下面的代碼:未申報的場編譯尼姆羅德程序

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) 

,但我得到了以下錯誤:

Error: undeclared field: 'id'

如何id沒有申報?代碼示例直接來自教程。語言變化中沒有反映在教程中的東西?


另外,如果我嘗試運行下面的代碼:

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

我得到以下錯誤:

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

爲什麼?

回答

3

恐怕你很可能會使用Nimrod(2013年5月發佈的版本0.9.2)或舊的git checkout的最新穩定版本,在編譯器中突出顯示的是錯誤。現在使用git版本https://github.com/Araq/Nimrod/commit/75ca6eb34fbc983d88961664fd1cfce5f8b44abf你的第一個和最後一個例子都沒有問題。在過去的幾個月裏,已經修復了與語言中的對象繼承有關的幾個錯誤(issue 179,issue 520,issue 575issue 563)。

如果您決定自己構建一個git版本(它根本不可怕,儘管有時會出現語言退化),請use the build instructions from the git,因爲該網站可能尚未更新。

+0

在[nimrod論壇](http://forum.nimrod-code.org/t/285)上發現有人遇到同樣的問題, – sloth