0

从示例:

local_var = "Thanks!"
@instance_var = "Thank you ,too"

那我怎么能得到他们自己的local_varinstance_var部分。我的意思是天气可能会调用一种方法get_self_name来获取自己的名字:

local_var.get_self_name # => 'local_var'
@instance_var.get_self_name # => '@instance_var' or => 'instance_var'

a = 'abc'
a.get_self_name # => 'a'
4

2 回答 2

2
$ irb
>> local_var = "foo"
=> "foo"
>> @instance_var = "bar"
=> "bar"
>> instance_variables
=> ["@prompt", "@instance_var"]
>> local_variables
=> ["_", "local_var"]

您可能还想查看ObjectSpace模块。

_局部变量自动设置为最后一个 irb 语句的返回值。@prompt 可能是 irb 的提示格式或类似的格式。

于 2010-07-25T17:23:04.680 回答
1

没有任何方法可以做到这一点。以下是一些绕过它的方法:

-1-使用哈希:

local_var = "Thanks!"
@instance_var = "Thank you ,too"
hash = {
  local_var: local_var,
  instance_var: @instance_var
}

hash.index(@instance_var) #=> :instance_var

-2-使用instance_variables

local_var = "Thanks!"
@instance_var = "Thank you ,too"

instance_variables.find {|x| instance_variable_get(x) == @instance_var } #=> :instance_var

请注意,这不适用于局部变量。

于 2010-07-25T17:24:56.770 回答