如何通过字符串形式的字段名称访问对象字段?
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))
只有当您在编译时知道该字段(也就是当您将它作为静态字符串时)才有效!请记住这一点!
我在编译时找出我想要访问的对象的特定字段的名称。在我编译之前,我不一定知道那是哪个字段,所以我只是将该字段名称作为一个字符串。我如何利用 nim 的元编程来访问对象上的该字段?
您可以编写一个非常简单的宏来计算点表达式(又名 object.yourFieldNameString)。
这是一个示例:
import std/[macros]
macro getField*(obj: object, fieldName: static string): untyped =
nnkDotExpr.newTree(obj, ident(fieldName))
只有当您在编译时知道该字段(也就是当您将它作为静态字符串时)才有效!请记住这一点!