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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 晴兰
打印 上一主题 下一主题

[通用发布] 免alias完美重写默认脚本的update

[复制链接]

Lv2.观梦者

梦石
0
星屑
722
在线时间
375 小时
注册时间
2009-3-9
帖子
398
11
发表于 2014-1-16 13:48:56 | 只看该作者
貌似module这种方法只能用于父类中存在super的方法,如果子类中没有这个方法的话,那么module无效。。。

点评

不不不,我说的无效是程序不会调用这个方法,不是super无效。  发表于 2014-1-16 15:37
你可以简单认为可以写成super() if defined?(super), defined可以这么用的  发表于 2014-1-16 15:35
新手学习中.....努力吧!!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
722
在线时间
375 小时
注册时间
2009-3-9
帖子
398
12
发表于 2014-1-16 15:39:55 | 只看该作者
ky52879 发表于 2014-1-16 13:48
貌似module这种方法只能用于父类中存在super的方法,如果子类中没有这个方法的话,那么module无效。。。 ...

举个简单的例子:

module A
  def abc
    p "A.abc"
    super
  end
end
class ABC
  include A
  def abc
    p "ABC.abc"
  end
end
ABC.new.abc

那么显示的只有 "ABC.abc",这个问题。。。
新手学习中.....努力吧!!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

13
 楼主| 发表于 2014-1-16 15:42:26 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

贵宾

14
发表于 2014-1-16 22:51:42 | 只看该作者
但是我们很多时候都会遇到这样的尴尬:由于old_method完成了某些变量的初始化(或者其它类似的、重要的内容),我们不得不在old_method之后添加我们的内容。这个时候,include一个模块进来似乎无法解决这种尴尬。

我觉得alias最大的问题不在于名字,而在于这种Hooking的机制(或者说Patching)应该由语言本身提供,而非我们手动的去曲线救国。

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

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

15
 楼主| 发表于 2014-1-16 23:38:50 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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