4

我尝试编译以下代码:

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)

但我收到以下错误:

错误:未声明的字段:'id'

怎么id不申报?代码示例直接来自教程。语言中是否有一些未反映在教程中的更改?


另外,如果我尝试运行以下代码:

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

我收到以下错误:

SIGSEGV:非法存储访问。(尝试从 nil 读取?)

为什么?

4

1 回答 1

3

恐怕您可能使用的是Nimrod的最后一个稳定版本(2013 年 5 月发布的 0.9.2 版)或旧的 git checkout,您强调的是编译器中的错误。现在使用 git 版本https://github.com/Araq/Nimrod/commit/75ca6eb34fbc983d88961664fd1cfce5f8b44abf您的第一个和最后一个示例都可以正常工作。在过去的几个月里,已经修复了几个与语言中的对象继承相关的错误(issue 179issue 520issue 575issue 563)。

如果您决定为自己构建一个 git 版本(它一点也不可怕,尽管有时该语言会出现回归),请使用 git 中的构建说明,因为该网站可能尚未更新。

于 2013-11-03T09:08:27.247 回答