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

Project1

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

[已经解决] 请教initialize定义中有关new的用法(参考RPG自带的帮助教程)

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
1
发表于 2021-5-7 21:34:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 taeckle 于 2021-5-7 21:38 编辑

小弟这两天潜心学习RPG自带的帮助教程,小弟才疏学浅,基本看不懂这个教程在讲什么,比如教程里提到的对象初始化,教程原文是这样描述的:

------------------------------------------------------------------------------------------------------------------------------------------------------------
生成对象时,把实变量初始化为某个特定的值。先定义一个名称为 initialize 的方法,在使用 new 生成新实例时会自动调用该方法。

class Person
  def initialize
    @name = "无名先生"
  end
end

从第二行开始的 initialize 方法的定义,表示实变量 @name 的初始值被赋值为字符串 "无名先生"。这样,生成新的 Person 对象的时候,会自动以 "无名先生" 初始化实变量。

initialize 方法中设定有临时参数的情况下,new 会取该参数为初始值。


class Person
  def initialize(name)
    @name = name
  end
end

alex = Person.new("艾力克斯")

上述示例中,initialize 方法里设定有临时参数 name,那么实变量 @name 的初始值就会使用该参数。参数 name 实际在 Person 类 new 时给予。最后一行,生成 Person 类对象时指定参数为 "艾力克斯",那么 @name 的初始值也就设定为 "艾力克斯"。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
请问下像上面这样的类名称.new(Person.new)到底是啥意思?有哪些实战应用意义? 调用数据还是创建数据呢?还有这个alex变量要如何才能应用到游戏的大地图事件里呢?

还请诸位指点一二,不胜感激!

Lv4.逐梦者

梦石
0
星屑
7946
在线时间
1182 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2021-5-9 01:17:40 | 只看该作者
你必须的区分类(class)与对象(object)。
Person是类
Person.new是生成一个Person的对象。
就用你的例子
  1. alex = Person.new("艾力克斯")
复制代码

这时alex已经生成一个对象,你可以进行另一个对象生成。
  1. ali = Person.new("阿里")
复制代码

alex于ali都属于Person类但是是各自独立的对象。
比如:
  1. ali.name = "新阿里"
复制代码

ali重新赋予@name值可是alex的@name值并不会因此而改变,ali与alex完全独立。
至于你说的实战应用,其实rmxp脚本都是,与你的例子相近的属于Game_Battler,只是rm在Game_Battler下还细分Game_Actor与Game_Enemy子类。

评分

参与人数 2星屑 +70 +1 收起 理由
RyanBern + 70 认可答案
taeckle + 1 大神威武!多谢了!

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 04:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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