如何通过字符串形式的字段名称访问对象字段?

How do I access an object field via its field name in string form?

我在编译时找出我想要访问的对象的特定字段的名称。在我编译之前,我不一定知道那是哪个字段,所以我只是将该字段名称作为一个字符串。我如何利用 nim 的元编程来访问对象上的该字段?

您可以编写一个非常简单的宏来计算点表达式(又名 object.yourFieldNameString)。

这是一个示例:

import std/[macros]

macro getField*(obj: object, fieldName: static string): untyped =
  nnkDotExpr.newTree(obj, ident(fieldName))

只有当您在编译时知道该字段(也就是当您将它作为静态字符串时)才有效!请记住这一点!