Nim:无法访问过程返回的对象的字段

Nim: Can't access fields of object returned by a procedure

我正在尝试用 Nim 编写词法分析器。抱歉,如果这听起来有点愚蠢,因为我昨天开始使用 nim,那么我的问题是我创建了一个如下所示的类型

import position

type
  Error* = object
    pos_start : position.Position
    pos_end : position.Position
    name: string
    details: string

然后我继续创建一个 returns 这种类型的实例的过程,

proc IllegalCharacterError*(pos_start : position.Position, pos_end : position.Position, details : string) : Error =
  return Error(pos_start: pos_start, pos_end: pos_end, name: "IllegalCharacterError", details: details)

现在,一切正常,除了当我从另一个模块尝试访问这个返回实例的字段时出现错误

from errors import nil
from position import nil

var current_char = "2"
let pos = position.Position(idx: -1, ln: 0, col: -1, fn: fn, ftxt: text)
let error = errors.IllegalCharacterError(pos, pos, current_char)
echo error.name

最后一行是抛出的错误,后面是编译时出现的错误

Error: undeclared field: 'name' for type errors.Error [declared in C:\Users\Mlogix\Desktop\testNim\errors.nim(4, 3)]

谢谢,如有任何帮助,我们将不胜感激。

好吧,一个小时后我终于意识到我的字段不是 public。对于未来的任何人,我将类型代码更改为

import position

type
  Error* = object
    pos_start* : position.Position
    pos_end* : position.Position
    name*: string
    details*: string

它奏效了。万岁。