如何在给定过程名称作为字符串的情况下调用 proc?

How do I invoke a proc given the procedure name as a string?

假设我们有以下过程:

proc helloWorld() =
    echo "Hallo World"

现在,我想调用过程 helloWorld 给定它的字符串名称。

let procName = "helloWorld"
invoke(procName)

这在 Nim 中可行吗?与 Java 反射 API 相比,这可以在编译时完成吗?

是:

import macros

proc helloWorld() =
  echo "Hallo World"

macro invoke(name: string): untyped =
  return newCall(name.strVal)

invoke("helloWorld")