cast uncheckedAssign

case 对象的一些限制可以通过 {.cast(uncheckedAssign).} 禁用:

  1. type
  2. TokenKind* = enum
  3. strLit, intLit
  4. Token = object
  5. case kind* : TokenKind
  6. of strLit:
  7. s* : string
  8. of intLit:
  9. i* : int64
  10. proc passToVar(x: var TokenKind) = discard
  11. var t = Token(kind: strLit, s: "abc")
  12. {.cast(uncheckedAssign).}:
  13. # 在 'cast' 块中允许将 't.kind' 传递给 'var T' 参数:
  14. passToVar(t.kind)
  15. # 在 'cast' 块中允许设置字段 's' ,即便构造的 'kind' 字段有未知的值
  16. t = Token(kind: t.kind, s: "abc")
  17. # 在 'cast' 块中允许直接分配 't.kind' 字段
  18. t.kind = intLit