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

Project1

 找回密码
 注册会员
搜索

怎样学习Ruby中的类?

查看数: 2105 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2011-7-16 21:23

正文摘要:

本帖最后由 灬心魔o 于 2011-7-16 21:25 编辑 以我对类理解,应该先定义类,再决定这个类有什么行为。(定义类却在基础篇的最后一篇) 在内部类中,每个类都只说方法。 请教老师,应该怎么理解,怎么用这些方法? ...

回复

熊猫 发表于 2011-7-17 12:44:12
灬心魔o 发表于 2011-7-17 12:24
Ruby的内部类及每个类的方法都是系统定义好的。当我们用内部类创建对象时,怎么使用这些类已经定义好的行 ...

self + other
将字符串连接起来之后,返回得到的新字符串。

self * times
将字符串的内容重复 times 次之后,返回新字符串。

这样的,带有self的,你就像Wind2010那样用。
其他的,像"insert(nth, other)"
这样的是print "ttttt".insert(3,"@")    #这里就示范了调用创建好了的内部类的行为
上面是调用了string类的insert的方法。
其实那种带有self的特殊方法,知道会用即可,究其本质它与普通常规的方法倒有些不一样。
我认为下面这种才是常规的方法调用即object.xxx(parameters)

推荐LZ看看RGSS类,方法都很典型,系统类比较容易使人感到迷惑。
灬心魔o 发表于 2011-7-17 12:24:17
提示: 作者被禁止或删除 内容自动屏蔽
Wind2010 发表于 2011-7-17 12:14:18
本帖最后由 Wind2010 于 2011-7-17 12:15 编辑
灬心魔o 发表于 2011-7-17 12:10
创建类,用类创建对象和类的继承的概念我了解。
学习到基础的对象篇时,教材建议先看看String 类,有必要 ...
  1. print "self" + "other"
  2. print "self" * 3
  3. print "self" <=> "self"
  4. print "sef" == "self"
复制代码

点评

方法不会就这样用吧,还是不理解  发表于 2011-7-17 12:18
灬心魔o 发表于 2011-7-17 12:10:24
提示: 作者被禁止或删除 内容自动屏蔽
熊猫 发表于 2011-7-17 00:44:39
本帖最后由 熊猫 于 2011-7-17 00:46 编辑
纳尔德 发表于 2011-7-16 21:40
其实我也是刚学习的.
我的理解吧就:
class Son


不是开启类,是创建类的实例。
@kid = Son.new
@kid是这个实例名称,相当于身份证,通过这个来确定类实例的身份,以及操作这个类实例。


类是事先写好,决定有什么方法
class xxx
   def initialize
      xxx
   end
   def xxxx
      xxxxx
   end
end
然后创建类的实例(可以理解为你画好了图纸,要将图纸变成实物)
@a=xxx.new
@a就代表这个实物,通过他来调用相关方法。
@a.xxx

这里重点是,没有实例化的类是不能使用的,就好比建房子图纸只是图纸,是不可以住的。只有实例化,也就是建好后才可以实现房子的相关功能。

点评

嗯 多谢大大指教  发表于 2011-7-17 08:02
纳尔德 发表于 2011-7-16 21:40:55
其实我也是刚学习的.
我的理解吧就:
class Son
...
end
然后要开启这个类的话.就是在事件第三页最右下角的脚本窗口输入- -..
@kid = Son.new  #其实kid是随便你怎么改的.Son是上面的类的定义.

而继承的话就
class Son < Parents
...
end
也就是  Parents(父母)的能力  作为Son(儿子)  能继承.
比如 找金钱窗口来说  
class Window_Gold < Window_Base
def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
...
end
它是继承 Window_Base 的
所以在脚本  Window_Base里
初始化方法
def initialize(x, y, width, height)
super()
作为金钱窗口 Window_Gold 它可以继承
也就是上面的 super(0, 0, 160, 64)
Wind2010 发表于 2011-7-16 21:35:05
本帖最后由 Wind2010 于 2011-7-16 21:36 编辑
  1. module A # A级 Object不知道- -
  2.   class B
  3.     def C
  4.       print "D"
  5.     end
  6.   end
  7. end
  8. xd = A::B.new.C
复制代码

点评

没看懂= =|||  发表于 2011-7-17 11:45
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-30 02:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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