查看: 5332|回复: 11

[已经解决] 【Ruby】 有 include 相反的操作的写法吗?

[复制链接]
梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
回帖
148
发表于 2013-7-2 21:10:14 | 显示全部楼层 |阅读模式

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

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

×



    就是去除模块的写法
梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2013-7-3 01:59:37 | 显示全部楼层
为什么要这么做呢?
引入模块就是为了解决多继承的问题。为什么还要除去模块呢?是有什么特殊需要么?

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
回帖
148
 楼主| 发表于 2013-7-3 09:25:42 | 显示全部楼层
DeathKing 发表于 2013-7-3 01:59
为什么要这么做呢?
引入模块就是为了解决多继承的问题。为什么还要除去模块呢?是有什么特殊需要么? ...


RUBY是动态语言嘛,为了实现游戏运行时自我修改

用undef应该可以实现,我想如果可以直接卸掉模块,修改效率更高……

我是新手嘛,所以不知道能不能卸模块或有更好的办法去掉已定义的东西
回复

使用道具 举报

梦石
0
星屑
50
在线时间
135 小时
注册时间
2013-6-10
回帖
28
发表于 2013-7-3 10:23:25 | 显示全部楼层
if/else就够了不知道为什么要undef.
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2013-7-3 10:47:02 | 显示全部楼层
Ceopal 发表于 2013-7-3 09:25
RUBY是动态语言嘛,为了实现游戏运行时自我修改

用undef应该可以实现,我想如果可以直接卸掉模块,修改 ...

玩动态不是不可以,但我觉得RPG Maker制作的游戏不需要这种编程技巧吧?

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

梦石
0
星屑
50
在线时间
32 小时
注册时间
2013-6-28
回帖
39
发表于 2013-7-3 15:25:02 | 显示全部楼层
不如不要include,需要的时候用::直接引用
回复

使用道具 举报

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
回帖
148
 楼主| 发表于 2013-7-3 18:56:57 | 显示全部楼层
本帖最后由 Ceopal 于 2013-7-3 18:58 编辑

当一堆不是自己写的脚本聚在一起后……脚本们各自的脾气不一样……
if/else就够了不知道为什么要undef.

不够的……只要存在,就会引发问题……就像 高速公路上不能停车(脚本)一样……
玩动态不是不可以,但我觉得RPG Maker制作的游戏不需要这种编程技巧吧?

比喻回复你......

如果每个脚本是一辆车……

我不是不想当交警……而是我没有能力当交警……

我选择当铺路工人,为脾气不好的脚本 铺一条路……
不如不要include,需要的时候用::直接引用

呃
回复

使用道具 举报

梦石
0
星屑
68
在线时间
585 小时
注册时间
2013-5-25
回帖
1484
发表于 2013-7-4 19:17:28 | 显示全部楼层
Ceopal 发表于 2013-7-3 18:56
当一堆不是自己写的脚本聚在一起后……脚本们各自的脾气不一样……

不够的……只要存在,就会引发问题…… ...

直接调用模块的方法为什么不可呢

不如你自己对object类写一个方法让它对指定模块的方法逐个undef吧,把N替换为Object就可以直接用了

[pre lang="ruby" line="1"]module A
  def a
    msgbox "1"
  end
end
class N
  include A
  def initialize
  end
  def cmds(a)
    eval(a)
  end
  def uninclude(a)
    for f in a.instance_methods
      eval("undef "+f.to_s)
    end
  end
end
n = N.new
n.a #==> 1
n.uninclude A
n.a #==> unfined mothod error[/pre]

我认为楼主说自己是新手只是个借口、借口,嗯

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢帮忙

查看全部评分

回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

发表于 2013-7-4 20:06:35 | 显示全部楼层
去除有用吗?别处一调用就报错了;那要是可以做到不调用,还去除它干嘛。还是说你本来就不打算调用它们{:2_263:}
回复

使用道具 举报

梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2013-7-4 21:38:11 | 显示全部楼层
Sion 发表于 2013-7-4 20:06
去除有用吗?别处一调用就报错了;那要是可以做到不调用,还去除它干嘛。还是说你本来就不打算调用它们{:2_ ...

如果是先前使用某种语言然后又开始使用ruby,一部分人会故意刁难ruby故意挑刺

点评

其实楼主只是在想一些奇怪的办法来解决脚本的兼容性问题而已 - -b  发表于 2013-7-4 21:49
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部