Project1

标题: 有关alias的问题 [打印本页]

作者: invirgin    时间: 2015-12-6 21:16
标题: 有关alias的问题
在看F1 对alias 理解不清楚

RUBY 代码复制
  1. class Person
  2.   def introduce(形参)
  3.     msgbox"#{形参}!我是人类"
  4.   end
  5.   alias xxx001_introduce introduce
  6.   def introduce(形参)
  7.     xxx001_introduce
  8.     msgbox"#{形参}!我是男性"
  9.   end
  10. end
  11. a=Person.new
  12. a.introduce("你好")


我的想法是显示 你好!我是人类 再显示  你好!我是男性

但是 只显示报错。。。。
作者: VIPArcher    时间: 2015-12-6 21:29
class Person
  def introduce(形参)
    msgbox"#{形参}!我是人类"
  end
  alias xxx001_introduce introduce
  def introduce(形参)
    xxx001_introduce(形参)
    msgbox"#{形参}!我是男性"
  end
end
a=Person.new
a.introduce("你好")
作者: invirgin    时间: 2015-12-6 22:03
还有一个问题,alias 的用处都说 是为了避免与其他 手写脚本相干扰,但是以我上面的例子,如果我在网上下到一个脚本,而脚本中用到def introduce。但它调用的是我的新方法啊,就是显示 你好!我是人类 再显示  你好!我是男性 而不是原def introduce 只显示 你好!我是人类 的呢个啊?这不还是干扰了吗

呵呵 ,理解能力差,逻辑性弱,见笑了
作者: VIPArcher    时间: 2015-12-6 22:08
alias 就是为了保留原方法,让原方法可以不被直接覆盖。
详细的内容可以看喵呜的形象生动的解释:https://rpg.blue/forum.php?mod=v ... p;page=1#pid2519110
作者: invirgin    时间: 2015-12-7 18:39
本帖最后由 invirgin 于 2015-12-7 18:55 编辑

谢谢 版主大人
但是

在喵大的最终的执行脚本中 def 洗澡   第一行是开始冲水
但是在 第一个插入脚本中 我并没有找到 开始冲水 这指令啊
为什么 最终的执行脚本中 有开始冲水呢?
作者: invirgin    时间: 2015-12-7 19:10
本帖最后由 invirgin 于 2015-12-7 19:25 编辑

还有一个问题
以喵大的例子




假如我在网上 下了一个脚本

脚本中 调用def 小苹果

但结果是显示歌词 你是我的小呀小苹果 怎么爱你都不嫌多 多多多多多

但 网上 下的脚本 只是想 调用 原始的 def 小苹果 即显示歌词 你是我的小呀小苹果

难道 我只能手动将我下的脚本中的 def 小苹果 全都改为 def 红富士?



作者: 喵呜喵5    时间: 2015-12-7 20:36
本帖最后由 喵呜喵5 于 2015-12-7 20:39 编辑
invirgin 发表于 2015-12-7 19:10
还有一个问题
以喵大的例子


是的,请针对这个脚本手动进行一次这样的批量修改,不过,个人的建议是,放弃其中一个脚本

alias 是防止脚本冲突的一个措施,而不是一个肯定能防止脚本冲突的万能手段。

你提到的这种情况可以看成是这样:
一个脚本将 角色的名字 改成了 角色的名字+角色的称号,角色名字中允许有其他内容
而另一个脚本则认为 角色的名字 就是 角色的名字 ,角色名字中不允许有其他内容
在这种情况下,两个脚本本身的功能(逻辑)就是冲突的,让这两个冲突的功能相互兼容本身就是不现实的,必须在两个功能之间做出取舍

当然,实际上,如果不是特别大的功能改动的话,这种情况出现的几率还是比较小的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1