查看: 1066|回复: 9

[已经解决] 方法参数的问题

  [复制链接]

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
回帖
955

贵宾

发表于 2009-7-24 21:58:23 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
如何当传一个参数给方法时,在方法中创建该变量名。
def a(b)
   参数的变量名 = 1
  p 参数变量名
end
self.a(away)
等同于
   away = 1
  p away
就算痛也要做,宅必备,宅人的必备网站
梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2009-7-24 22:23:11 | 显示全部楼层
有点深奥……

有点弯……

这样执行有必要吗- -











你知道得太多了

回复

使用道具 举报

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
回帖
3622
发表于 2009-7-24 22:29:24 | 显示全部楼层
有点深奥……

有点弯……

这样执行有必要吗- -
后知后觉 发表于 2009-7-24 22:23


说不定在某些场合还会用的上~
其实类似这样的情况也可以用 array 来完成 - -~

这个问题以前也想过,等待紫苏大的降临吧~
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2009-7-24 22:47:10 | 显示全部楼层
LZ要的效果在我能力之外

很难想象。。。











你知道得太多了

回复

使用道具 举报

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
回帖
2059
发表于 2009-7-24 22:50:18 | 显示全部楼层
没听明白LZ的意思,哪位能解释一下
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2009-7-24 22:58:11 | 显示全部楼层
本帖最后由 后知后觉 于 2009-7-24 23:02 编辑

我是这样理解的
一个变量又或者是对象- - 比如叫
away
然后把这个变量传递给方法 a(away)
然后在方法a的内部创建一个变量叫 away
然后给这个新建的away = 1 再 p away

一句话就是传递给方法a的是一个要新建的变量的变量名- -











你知道得太多了

回复

使用道具 举报

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
回帖
2623
发表于 2009-7-24 23:49:31 | 显示全部楼层
用Hash(哈希表) 制作 不知道可不可行?

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复

使用道具 举报

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
回帖
2623
发表于 2009-7-25 00:52:25 | 显示全部楼层
本帖最后由 TERENCE 于 2009-7-25 00:56 编辑

利用Hash(哈希表) 达成效果
  1. class Create_Variable_Name
  2.   attr_accessor :variable_name
  3.   def initialize
  4.     @variable_name = Hash.new
  5.   end
  6.   def name(variable_name)
  7.     @variable_name[variable_name] = nil
  8.   end
  9. end
复制代码
h = Create_Variable_Name.new
h.name("KA")
h.name("KB")
h.name("KC")
p t = h.variable_name # {"KA"=>nil, "KB"=>nil, "KC"=>nil}
p t["KA"] = 10 # 10
p t # {"KA"=>10, "KB"=>nil, "KC"=>nil}
p h.variable_name # {"KA"=>10, "KB"=>nil, "KC"=>nil}
# 運算
p t["KA"] += 10 # 20
p t # {"KA"=>20, "KB"=>nil, "KC"=>nil}
p h.variable_name # {"KA"=>20, "KB"=>nil, "KC"=>nil}

感觉好像没什么意义 = =
# 创建该变量名
h = Create_Variable_Name.new
h.name("创建变量名")

# 变量運算
t = h.variable_name
t["创建的变量名"] = 10 # 10

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复

使用道具 举报

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-7-25 09:05:10 | 显示全部楼层
  1. eval("
  2. def a(var)
  3.   var = 1
  4.   p var
  5. end
  6. ")

  7. a("my_var")
复制代码
或者:

  1. def a(var)
  2.   eval("#{var} = 1")
  3.   p eval("#{var}")
  4. end

  5. a("my_var")
复制代码
局部变量比较特殊——非局部变量在 eval 之后就可以在外部直接调用了,但局部变量不行,因为 Ruby 解释器在判断一个不带符号的英文单词是方法还是局部变量时会判断之前是否有对这个单词赋值的语句出现,但如果赋值是在字符串中通过 eval 执行的,Ruby 解释器就不会认为它是一个局部变量,而是一个方法了~而如果这个方法没定义,自然就会报错……实际上内存中这个局部变量已经产生了,所以上面的第二种方法是再次调用 eval 去访问这个局部变量
回复

使用道具 举报

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
回帖
955

贵宾

 楼主| 发表于 2009-7-25 12:02:49 | 显示全部楼层
明白了,去试试,多谢指教
就算痛也要做,宅必备,宅人的必备网站
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部