Ним - конструкторы и проходящие объекты вокруг - PullRequest
0 голосов
/ 24 октября 2019

ОК, вопрос может быть (очень) для начинающих, но я все еще учусь.

У меня есть два разных "объекта ref"

Из значения "Из""module:

type
    Value* = ref object
        case kind*: ValueKind:
            of stringValue:
                s*: string
            of integerValue:
                i*: int
            of realValue:
                r*: float
            of booleanValue:
                b*: bool 
            of arrayValue:
                a*: seq[Value]
            of dictionaryValue:
                d*: Table[string,Value]
            of functionValue:
                f*: Function
            of objectValue:
                o*: Object

proc valueFromString*(v: string): Value =
    new(result)
    result.kind = stringValue
    result.s = v

Из модуля" аргумент ":

type
    Argument* = ref object
        case kind*: ArgumentKind:
            of identifierArgument:
                i*: int
            of literalArgument:
                v*: Value

proc argumentFromStringLiteral(l: cstring):Argument {.exportc.} =
    let ret = Argument(kind: literalArgument, v: valueFromString($l))
    return ret

Дело в том, что компилятор жалуется на предпоследней строке (при попытке создатьновый аргумент):

type mismatch: got <Value> but expected 'Value = ref Value:ObjectType

Что я делаю не так? valueFromString возвращает «указатель» на объект Value, не так ли?

...