cast uncheckedAssign
case 对象的一些限制可以通过 {.cast(uncheckedAssign).} 禁用:
type
TokenKind* = enum
strLit, intLit
Token = object
case kind* : TokenKind
of strLit:
s* : string
of intLit:
i* : int64
proc passToVar(x: var TokenKind) = discard
var t = Token(kind: strLit, s: "abc")
{.cast(uncheckedAssign).}:
# 在 'cast' 块中允许将 't.kind' 传递给 'var T' 参数:
passToVar(t.kind)
# 在 'cast' 块中允许设置字段 's' ,即便构造的 'kind' 字段有未知的值
t = Token(kind: t.kind, s: "abc")
# 在 'cast' 块中允许直接分配 't.kind' 字段
t.kind = intLit
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .