查看: 2124|回复: 3

[已经过期] 关于类的重新定义的问题

[复制链接]

幻想天神

梦石
0
星屑
55
在线时间
166 小时
注册时间
2012-3-24
回帖
355
发表于 2014-4-5 19:21:58 | 显示全部楼层 |阅读模式

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

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

×
class A
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
end

然后写 class A
                    aaaaaaaaaaaaaa
             end

是覆盖原来的,还是加上新的?

故九江太守

梦石
0
星屑
314
在线时间
2158 小时
注册时间
2012-12-5
回帖
4323
发表于 2014-4-5 19:47:31 | 显示全部楼层
貌似是加上新的。。自己试试不就行了么啊
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-4-5 19:57:08 | 显示全部楼层
本帖最后由 taroxd 于 2014-4-30 20:21 编辑

加上新的,但是同名方法会覆盖原来的方法。
要完全重写类,可以用Object.send(:remove_const, :ClassName)来完成

评分

参与人数 1星屑 +150 收起 理由
myownroc + 150 认可答案

查看全部评分

回复

使用道具 举报

○赛

梦石
0
星屑
1254
在线时间
1276 小时
注册时间
2013-1-22
回帖
2078

贵宾

发表于 2014-4-5 20:24:56 | 显示全部楼层
本帖最后由 天地有正气 于 2014-4-5 20:26 编辑

举个例子吧:
  1. class Rpglt
  2. end
复制代码
然后
  1. class rpglt
  2.   attr_accessor :hp
  3. end
复制代码
之后在
  1. class Rpglt
  2.   attr_accessor :sp
  3. end
复制代码
这两个实例变量都存在了。
如果
  1. class Rpglt
  2.   def xz
  3.     p "I'm XiaoZhou."
  4.   end
  5. end
复制代码
之后在
  1. class Rpglt
  2.   def aa
  3.     p "啊啊"
  4.   end
  5. end
复制代码
aa和xz两个方法都存在。

接下来
  1. class Rpglt
  2.   def xz
  3.     p "I'm TianDiYouZhengQi."
  4.   end
  5. end
复制代码
此时方法xz已经变成了显示“我是天地有正气。”

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 我很赞同

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部