Project1

标题: Ruby中如何获取变量的变量名称? [打印本页]

作者: ky52879    时间: 2014-8-9 12:18
标题: Ruby中如何获取变量的变量名称?
各位大大们,小弟最近在研究Ruby,想请教一个问题:

现有一个小脚本:
RUBY 代码复制
  1. class Test
  2.   def self.new
  3.     $name = xxxx #这一步怎么写呢?
  4.   end
  5. end
  6. test = Test.new
  7. p $name  -> "test" # 如何实现呢?


就是ruby中如何获取一个变量所引用的变量名称呢?

作者: taroxd    时间: 2014-8-9 14:33
RUBY 代码复制
  1. class Test
  2.   def initialize(name)
  3.     $name = name
  4.   end
  5. end
  6.  
  7. test = Test.new(local_variables.first.to_s)
  8. p $name #=> "test"

作者: taroxd    时间: 2014-8-11 14:24
本帖最后由 taroxd 于 2014-8-11 14:28 编辑

那么这段代码里,你想要获取的是什么呢?
RUBY 代码复制
  1. class Test
  2.   def self.new
  3.     $name = xxxx
  4.   end
  5. end
  6. test = Test.new
  7. p $name  -> "test"
  8.  
  9. test1 = test2 = @test3 = Test4 = $test = Test.new
  10. p $name -> ??
  11.  
  12. Test.new
  13. p $name -> ??
  14.  
  15. test = -> { Test.new }
  16. p $name -> ??
  17. test.call
  18. p $name -> ??
  19.  
  20. test = Hash.new(Test.new)
  21. p $name -> ??



当楼主把这些问号都填上之后,我们就召唤@晴兰 来帮楼主实现吧
作者: 寒冷魔王    时间: 2014-10-18 00:45
本帖最后由 寒冷魔王 于 2014-10-18 00:52 编辑
  1. class Test
  2.   def self.new
  3.     $name = /`(.*)'/ =~ caller.first ? $1 : nil
  4.   end
  5. end
  6. def test
  7.   return Test.new
  8. end
  9. test
  10. p $name
复制代码
@taroxd   其实函数也可以看作是一种变量。
作者: 国产吃货    时间: 2014-10-20 08:58
是想返回是谁调用了这个$name?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1