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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
帖子
305
跳转到指定楼层
1
发表于 2013-7-2 21:10:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x



    就是去除模块的写法

Lv1.梦旅人

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
帖子
305
12
 楼主| 发表于 2013-7-4 22:53:59 | 只看该作者
本帖最后由 Ceopal 于 2013-7-4 23:09 编辑
克莉丝 发表于 2013-7-4 19:17
直接调用模块的方法为什么不可呢

不如你自己对object类写一个方法让它对指定模块的方法逐个undef吧,把N ...

阿里嘎托``
ps: 不是新手哪里有那么多问题要请教别人……{:2_270:}

还是说你不调用

。。我只是在学习与想象中


DeathKing 发表于 2013-7-4 22:46
总感觉跟你之前一个帖子有奇怪的联系。

# This is dk.rb.

这个load作用好像是临时用代码的吧~
好像有点明白了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1180
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

11
发表于 2013-7-4 22:46:42 | 只看该作者
总感觉跟你之前一个帖子有奇怪的联系。

RUBY 代码复制下载
  1. # This is dk.rb
  2. Module A
  3.   def self.foo
  4.      puts "bar"
  5.   end
  6. end
  7.  
  8. class DK
  9.   def initialize
  10.     puts "DK"
  11.   end
  12. end
  13.  
  14. A.foo
  15. DK.new


使用load(file, true)测试:

RUBY 代码复制
  1. C:\Users\DeathKing>irb
  2. irb(main):001:0> load("dk.rb", true)
  3. "bar"
  4. dk
  5. => true
  6. irb(main):002:0> DK.new
  7. NameError: uninitialized constant DK
  8.         from (irb):2
  9.         from D:/Compier/Ruby193/bin/irb:12:in `<main>'
  10. irb(main):003:0>


但这个只保证对模块有效。你可以参考《Ruby元编程》一书。

评分

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

查看全部评分


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

使用道具 举报

Lv2.观梦者

梦石
0
星屑
767
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
10
发表于 2013-7-4 21:38:11 | 只看该作者
Sion 发表于 2013-7-4 20:06
去除有用吗?别处一调用就报错了;那要是可以做到不调用,还去除它干嘛。还是说你本来就不打算调用它们{:2_ ...

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

点评

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

使用道具 举报

Lv2.观梦者 (暗夜天使)

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

贵宾

9
发表于 2013-7-4 20:06:35 | 只看该作者
去除有用吗?别处一调用就报错了;那要是可以做到不调用,还去除它干嘛。还是说你本来就不打算调用它们{:2_263:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
68
在线时间
585 小时
注册时间
2013-5-25
帖子
1524
8
发表于 2013-7-4 19:17:28 | 只看该作者
Ceopal 发表于 2013-7-3 18:56
当一堆不是自己写的脚本聚在一起后……脚本们各自的脾气不一样……

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

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

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

RUBY 代码复制
  1. module A
  2.   def a
  3.     msgbox "1"
  4.   end
  5. end
  6. class N
  7.   include A
  8.   def initialize
  9.   end
  10.   def cmds(a)
  11.     eval(a)
  12.   end
  13.   def uninclude(a)
  14.     for f in a.instance_methods
  15.       eval("undef "+f.to_s)
  16.     end
  17.   end
  18. end
  19. n = N.new
  20. n.a #==> 1
  21. n.uninclude A
  22. n.a #==> unfined mothod error


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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
521 小时
注册时间
2011-12-7
帖子
305
7
 楼主| 发表于 2013-7-3 18:56:57 | 只看该作者
本帖最后由 Ceopal 于 2013-7-3 18:58 编辑

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

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

比喻回复你......

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

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

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

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
32 小时
注册时间
2013-6-28
帖子
39
6
发表于 2013-7-3 15:25:02 | 只看该作者
不如不要include,需要的时候用::直接引用
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1180
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

5
发表于 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的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
135 小时
注册时间
2013-6-10
帖子
29
4
发表于 2013-7-3 10:23:25 | 只看该作者
if/else就够了不知道为什么要undef.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 12:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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