设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1327|回复: 3
打印 上一主题 下一主题

[有事请教] ruby的@@变量怎么用。。

[复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
1
发表于 2012-1-13 18:12:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 yangff 于 2012-1-13 18:28 编辑
class A
  def self.yui_set(a)
    @@a=a
  end
end
class B<A
yui_set :hi
  def get
    return @@a
  end
end
class C <A
  yui_set :yoo
  def get
    return @@a
  end
end
b=B.new
c=C.new
c.get #=>:yoo
b.get #=>:yoo

期望
c.get #=>:yoo
b.get #=>:hi
怎么实现?
哎呀,蛋疼什么的最有爱了

Lv2.观梦者

虚構歪曲

梦石
0
星屑
319
在线时间
1196 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2012-1-13 18:22:41 | 只看该作者
本帖最后由 忧雪の伤 于 2012-1-13 18:23 编辑
b.get #=>:yoo

确定这段不会报 NoMethodError
类变量当然会被继承。
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
 楼主| 发表于 2012-1-13 18:29:55 | 只看该作者
忧雪の伤 发表于 2012-1-13 18:22
确定这段不会报 NoMethodError ?
类变量当然会被继承。

但是我要让他们不同啊。这个变量起到了构造函数的作用怎么能相同呢……
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1578
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

4
发表于 2012-1-14 08:11:49 手机端发表。 | 只看该作者
本帖最后由 逸豫 于 2012-1-14 13:50 编辑

去掉一个@
或者类变量是个哈希表
以类名或其他做键,变量内容做值
  1. class A
  2.   @@a = {}
  3.    def self.yui_set(a)
  4.      @@a[self]=a
  5.    end
  6. end
  7. class B<A
  8. yui_set :hi
  9.    def get
  10.      return @@a[self.class]
  11.    end
  12. end
  13. class C <A
  14.    yui_set :yoo
  15.    def get
  16.      return @@a[self.class]
  17.    end
  18. end
  19. b=B.new
  20. c=C.new
  21. print c.get #=>:yoo
  22. print b.get #=>:hi
复制代码
@yangff
表问我为啥这样做

点评

用奇怪的方法解决了,这样不行的自己试试就知道  发表于 2012-1-14 13:03

评分

参与人数 1星屑 +12 收起 理由
后知后觉 + 12 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-2-24 06:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表