2013-11-01 11 views
5

tôi cố gắng biên dịch đoạn mã sau:lĩnh vực được khai báo trong loại thừa hưởng biên dịch Nimrod chương trình

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) 

nhưng tôi nhận được lỗi sau:

Error: undeclared field: 'id'

như thế nào id không công bố? Mẫu mã là trực tiếp từ hướng dẫn. Đã làm điều gì đó trong ngôn ngữ thay đổi không được phản ánh trong hướng dẫn?


Ngoài ra, nếu tôi cố gắng để chạy các đoạn mã sau:

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

tôi nhận được lỗi sau:

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

Tại sao?

Trả lời

3

Tôi sợ bạn có khả năng sử dụng bản phát hành ổn định cuối cùng của Nimrod (phiên bản 0.9.2 được phát hành vào tháng 5 năm 2013) hoặc thanh toán git cũ, những gì bạn đánh dấu là lỗi trong trình biên dịch. Ngay bây giờ với phiên bản git https://github.com/Araq/Nimrod/commit/75ca6eb34fbc983d88961664fd1cfce5f8b44abf cả ví dụ đầu tiên và cuối cùng của bạn đều hoạt động mà không gặp vấn đề gì. Trong vài tháng qua, một số lỗi đã được sửa liên quan đến kế thừa đối tượng bằng ngôn ngữ (issue 179, issue 520, issue 575issue 563).

Nếu bạn quyết định xây dựng cho mình một phiên bản git (nó không đáng sợ chút nào, mặc dù đôi khi có những hồi quy trong ngôn ngữ) xin vui lòng use the build instructions from the git vì trang web có thể chưa được cập nhật.

+0

Tìm thấy ai đó có cùng vấn đề trên [diễn đàn nimrod] (http://forum.nimrod-code.org/t/285) – sloth

Các vấn đề liên quan