Project1

标题: 关于调用自身的类内的方法的问题..... [打印本页]

作者: 水镜风生    时间: 2008-2-8 20:40
标题: 关于调用自身的类内的方法的问题.....
呃........不知道为什么会写出歧义性这么大的题目,反正看例子吧:
在Scene_Title里:
case @command_window.index
      when 0  # 新游戏
        command_new_game
      when 1  # 继续
        command_continue
      when 2  # 退出
        command_shutdown

然后下面有这样的定义:
   def command_new_game
   ............
   def command_continue
   .............
   def command_shutdown
   .............

问题是:
当在类内调用自身的方法时,不用生成实例?抑或......command_XXXXX像C语言那样作函数用?

为什么我这样:
    class Gou
     def jiao
      p "wow~~"
     end
     jiao
    end
却jiao不出来..... [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 逐月    时间: 2008-2-8 20:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 逐月    时间: 2008-2-8 20:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 天圣的马甲    时间: 2008-2-8 21:07
最近理解能力严重下降,请问你是要这个效果吗?
   class Gou
  def main
     print "wow~~"
   $scene = Scene_Map.new
   end
   end

然后调用$scene = Gou.new
作者: 华华    时间: 2008-2-8 21:10
以下引用逐月于2008-2-8 12:46:06的发言:

先调用脚本。
LZ可以这样用
class Gou
  def  initialize
    jiao
  end  
  def jiao
     p "wow~~"
  end
end
然后在时间脚本里生成实例aaa=Gou.new
或者
class Gou
  def self.jiao
     p "wow~~"
   end
   jiao
end

作者: Eclair    时间: 2008-2-8 21:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: link006007    时间: 2008-2-8 22:57
类中, 除了静态的, 都只是声明和定义
class T_T
  @@B_B = 0 # protected static B_B
  B_B = 1   # public static const B_B
  def initialize
   B_B()
  end
  def B_B
    p "@_@"
  end
  def B_B2
    p @@B_B
  end
  def self.B_B3   # protected static B_B3()
    p "B_B"
  end
  B_B3()
end

d_d = T_T.new
d_d.B_B2
p T_T::B_B

class Q_Q < T_T
  B_B3()
end
哈... 我楼上已经有答案了 - -b
以下引用华华于2008-2-8 13:10:11的发言:
class Gou
def self.jiao
    p "wow~~"
  end
  jiao
end


作者: 水镜风生    时间: 2008-2-9 19:25
呃......2~5楼全部误解风某的意思了......你们忽略了风某给出的例子吧.......
风某想问的是,在Scene_Title里,为什么可以:
  when 0
   command_new_game
command_new_game是一个方法,这个方法不用实例就直接调用了,所以令风某感到疑惑.
嗯,绿发MM的这句是正解:
类的内部调用好像也是必须在另一个def里面呢

把jiao写在另一个方法里就不会出错了,感谢各位的热情解答.
以下引用Eclair于2008-2-8 13:14:58的发言:
LZ要继续加油哦~~

多谢鼓励.






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