相关疑难解决方法(0)

Ruby:获取变量名称

我如何获得变量名称?例如,

def get_var_name(var)
  # return variable name
end

myname = nil
get_var_name myname #=> myname
Run Code Online (Sandbox Code Playgroud)

初衷:

somevar = "value"

puti somevar #=> somevar = "value"
# that is a shortage for
# `puts "somevar = #{somevar.inspect}"`
Run Code Online (Sandbox Code Playgroud)

我的尝试:

def puti(symb)
  var_name  = symb.to_s
  var_value = eval(var_name)
  puts "#{var_name} = #{var_value.inspect}"
end
puti :@somevar # that actually will work only with class vars or whatever considering var scope;
Run Code Online (Sandbox Code Playgroud)

ruby

8
推荐指数
2
解决办法
5915
查看次数

How can I print a variable name and its value without typing the name twice?

When you are debugging, it's very useful to do this:

var = calc()
print("var:", var)
Run Code Online (Sandbox Code Playgroud)

Is there any language where this is easy to do? In C and C++ you can use the stringify macro operator # and in Ruby I found this question:

Ruby - 打印变量名称,然后打印其值

使用符号:var和块的解决方案就是我想要的.

在D中,我使用了这个:

void trace(alias msg)() {
    writeln(msg.stringof ~ ":" ~ to!string(msg));
}
Run Code Online (Sandbox Code Playgroud)

但我不确定这是最好的方法,因为它只适用于简单的情况.我尝试了几种方法,但有时你可以得到字符串,但不是值(因为变量超出范围),或者你必须首先混合模板然后调用函数.

那么其他语言呢?蟒蛇?F#?嘘?Shell脚本(无论哪个shell)?Perl的?(我更喜欢远离Perl,tho).TCL?Lisp,Scheme?Java的?(Java不太可能这样做).

即使在我找到某种解决方案的语言中,它也适用于简单的情况.如果我想要打印任意表达式怎么办?

如果我正在设计一种语言,这个功能将是必备的.:-)

macros d metaprogramming

6
推荐指数
1
解决办法
858
查看次数

标签 统计

d ×1

macros ×1

metaprogramming ×1

ruby ×1