查看: 2395|回复: 8

[已经解决] 怎样学习Ruby中的类?

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
回帖
267
发表于 2011-7-16 21:23:53 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
回帖
3515
发表于 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

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

梦石
0
星屑
50
在线时间
977 小时
注册时间
2011-5-13
回帖
245
发表于 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)
回复

使用道具 举报

勥

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
回帖
1674

开拓者

发表于 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
( ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ ω ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้【看猫君玩,我也搞一只】)
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
回帖
267
 楼主| 发表于 2011-7-17 12:10:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
回帖
3515
发表于 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

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
回帖
267
 楼主| 发表于 2011-7-17 12:24:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

勥

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
回帖
1674

开拓者

发表于 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类,方法都很典型,系统类比较容易使人感到迷惑。
( ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ ω ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้【看猫君玩,我也搞一只】)
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
回帖
267
 楼主| 发表于 2011-7-17 16:11:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部