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

Project1

 找回密码
 注册会员
搜索
查看: 2031|回复: 8
打印 上一主题 下一主题

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

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
帖子
289
跳转到指定楼层
1
发表于 2011-7-16 21:23:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 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技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

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

开拓者

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

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
帖子
289
5
 楼主| 发表于 2011-7-17 12:10:24 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
6
发表于 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技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

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

使用道具 举报

Lv1.梦旅人

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

开拓者

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

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
101 小时
注册时间
2011-6-22
帖子
289
9
 楼主| 发表于 2011-7-17 16:11:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-3 03:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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