Programming languages 什么语言可以让我们获得定义的参数名和传递的参数名?

Programming languages 什么语言可以让我们获得定义的参数名和传递的参数名?,programming-languages,parameters,Programming Languages,Parameters,例如,我定义了一个方法: def hello(String name) { println("Hello " + name) } 我想在运行时更改参数的名称: def hello(String name) { println("The name of the parameter of this method is: " + getParamName()) // getParamName() will be `name` here } 并且,我希望获得传递的参数的名

例如,我定义了一个方法:

def hello(String name) {
    println("Hello " + name)
}
我想在运行时更改参数的名称:

def hello(String name) {
     println("The name of the parameter of this method is: " + getParamName())
     // getParamName() will be `name` here
}
并且,我希望获得传递的参数的名称:

def hello(String name) {
    println("Passed parameter name: " + getPassedName())
}

String user1 = "someone"
hello(user1)
它将打印:

Passed parameter name:  user1
注意,这里是user1,变量名

我知道这很难,因为java/groovy/scala做不到。但我认为这是一个非常有用的特性(特别是对于web框架设计)。有一种语言可以做到这一点吗?

  • 蟒蛇
这里有一个函数,其中一个函数将为您获取函数参数的名称和默认值

inspect.getargspec(func)
  • C#
下面是另一个使用匿名类型和反射的SO问题的好例子

  • Javascript

这里有一种使用正则表达式在Javascript中实现的方法(另一个问题是,它也提到了Python方法)

通常无法获取参数的名称,因为该参数可能不是命名变量。鉴于此:

def hello(String name) {
    println("Passed parameter name: " + getPassedName())
}
它会在这里输出什么:

hello("a literal")
hello("an " + "expression")

有鉴于此,有些语言允许您访问所传递参数的原始AST。Lisp、Io和Ioke中的宏都允许您定义函数,这些函数将以一块未计算的代码作为参数,然后您可以对其进行检查。

您可以使用C#,看看这里的示例:D被称为具有编译时反射!您可能会看到他们的文档,谢谢,但是我们可以得到传递的变量名吗?我问题中的
user1