0

例から:

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

次に、どうすればそれらを自分で取得できますlocal_varinstance_varget_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 に答える