Project1

标题: 关于方法重载(2卡) [打印本页]

作者: IamI    时间: 2008-2-20 00:27
标题: 关于方法重载(2卡)
好吧……我承认我又把别的语言的概念搬过来了……{/gg}
关于“重载”,是指允许同一个事件名称而拥有不同参数的多态性。
举个例子:Bitmap有2个initialize方法:
def initialize(filename)
def initialize(width, height)
请问在RGSS2当中,有没有合适的方法实现方法的重载(即定义一个同名方法而又不覆盖掉原来的方法)呢?

如果实在不行,告诉我怎样做可选参数也可以。
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 神思    时间: 2008-2-20 00:30
具体看F1.
def initialize(*args)
  if args.size == 2
    width, height = args
  else
    filename = args[0]
  end
end [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~ [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: Beside    时间: 2008-2-20 00:31
定义同名方法不是对原方法的补充吗?
我脚本学的不好...{/hx}
作者: 幻の飞鱼    时间: 2008-2-20 00:32
话说F1里有这么一段,。不知道是否是LZ要的


方法的重载父类中已定义的方法在子类中再次被定义称为重载。在子类方法中调用父类相同方法的情况下,要使用关键词 super。

class Hahaha
  def laugh(x)
    return "哈" * x
  end
end

class Wahaha < Hahaha
  def laugh(x)
    return "哇" + super
  end
end

man = Wahaha.new
p man.laugh(4)      # => "哇哈哈哈哈"

上述示例是,对新建实例调用 Wahaha 类的 laugh 方法,其中 super 能调用其父类 Hahaha 类的 laugh 方法。那么,最后一行调用 laugh 方法可以理解为 "哇" + "哈" * 4,于是输出结果就为 "哇哈哈哈哈"。

作者: 神思    时间: 2008-2-20 00:32
不..他大概说的是`根据参数不同调用不同的函数吧``

作者: IamI    时间: 2008-2-20 00:32
先对于神思的解答认50%,还有50%请解释一下*的含义,谢谢。
作者: 幻の飞鱼    时间: 2008-2-20 00:35
哦,原来,胡说我也不懂那个 * 的意思

莫非是指针=。=呵呵
作者: IamI    时间: 2008-2-20 00:36
以下引用幻の飞鱼于2008-2-19 16:35:08的发言:

哦,原来,胡说我也不懂那个 * 的意思

莫非是指针=。=呵呵

指针那是C的概念=v=,不过难道是组成了一个数组,合在一起?RGSS的半类型编程让我很不爽= =
作者: 幻の飞鱼    时间: 2008-2-20 00:40
以下引用IamI于2008-2-19 16:36:35的发言:


以下引用幻の飞鱼于2008-2-19 16:35:08的发言:

哦,原来,胡说我也不懂那个 * 的意思

莫非是指针=。=呵呵


指针那是C的概念=v=,不过难道是组成了一个数组,合在一起?RGSS的半类型编程让我很不爽= =


我说着玩呢,我倒觉得RUBY挺爽的呵呵
我不爽于C的很多细节,比如“{”这个=。=
不如END来的舒服
作者: 雷欧纳德    时间: 2008-2-20 00:42
end是basic系的特点之一 -v-
虽然ruby不是basic系。。。。。。
其实我喜欢写{}。。。看起来清楚一点
写end容易对不整齐,好吧我承认我跑题了。。。。*那个的确不清楚。。。。ruby木指针概念-v-
作者: IamI    时间: 2008-2-20 00:43
我写出过end if,出错的时候郁闷得要死
(版聊就不好了,结帖吧……)
作者: 神思    时间: 2008-2-20 00:43
具体的不太记得了``
不过我记得以前夏娜说过是展开参数
作者: 亿万星辰    时间: 2008-2-20 00:45
*XXX是指针变量,貌似是应该理解成地址...args[0]就是这个地址里的第一个元素,[1]是第二个元素...
简单点,你可以把args理解成集所有参数为一体的数组....(不过数组名本来也就是指针...)
事实上,你可以p 一下args的type...就是Array......{/gg}
作者: 雷欧纳德    时间: 2008-2-20 00:49
以下引用亿万星辰于2008-2-19 16:45:50的发言:

*XXX是指针变量,貌似是应该理解成地址...args[0]就是这个地址里的第一个元素,[1]是第二个元素...
简单点,你可以把args理解成集所有参数为一体的数组....(不过数组名本来也就是指针...)
事实上,你可以p 一下args的type...就是Array......


数组本身是一个指针(c的知识-v-|||)
*XXX是指针变量的话,实际内容就是储存首个数组元素的地址鸟
理解的话,就是整个数组的起始位置
作者: 美兽    时间: 2008-2-21 21:54
RUBY不支持重载,只支持覆盖,但支持不定参数,LZ讲究用吧.




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