查看: 1696|回复: 2

[已经解决] Game_Actors

[复制链接]
梦石
0
星屑
170
在线时间
809 小时
注册时间
2013-8-23
回帖
773

开拓者

发表于 2014-2-9 21:09:53 | 显示全部楼层 |阅读模式

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

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

×
在Game_Actors类中
[pre lang="ruby" line="1"]  def initialize
    @data = []
  end
  def [](actor_id)
    if actor_id > 999 or $data_actors[actor_id] == nil
      return nil
    end
    if @data[actor_id] == nil
      @data[actor_id] = Game_Actor.new(actor_id)
    end
    return @data[actor_id]
  end[/pre]
这两段是干什么的?
[]是什么意思?

点评

后面的@data[actor_id]中,用的"[]"不是正在进行重载的算符,而是调用已经定义好的数组类的[]算符。  发表于 2014-2-11 13:00
楼主要注意下这个问题:def [](actor_id)是方法的重载,意思就是说用同一个符号来表示不同的方法,进行不同的操作。这里是对单目算符[]进行重载。  发表于 2014-2-11 12:58
@data[actor_id]是把[](actor_id)括号里的参数传递进来了【这就叫参数传递  发表于 2014-2-9 22:15
@data = []就是@data赋值一个空数组的意思= =这里的[]不是方法  发表于 2014-2-9 22:13

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

遗失的签名。。。
梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
回帖
1643

开拓者

发表于 2014-2-9 21:54:47 | 显示全部楼层
正如你看到的def后面的[]是一个方法
参考绿色注释部分,这个方法的使用方式是
  1. $game_actors[id]
复制代码
取出id所指定的角色($game_actor)对象
def initialize是一个默认的初始化方法,它可以接受self.new传递给它的参数【这个即使只是理论但是也是公认的规定
def []用于取出角色对象 上面已经说过了 if actor_id > 999 or $data_actors[actor_id] == nil #如果id超过上限999或这个id中没有角色就返回nil return nil

点评

谢谢  发表于 2014-2-9 22:18
@data=[]这理的[]是什么意思? @data[actor_id]又是什么意思?(实变量后加[]方法?现在[]方法还没定义完啊)  发表于 2014-2-9 22:04

评分

参与人数 1星屑 +80 收起 理由
︶ㄣ牛排ぶ + 80 认可答案

查看全部评分


  -fk: -azogi:
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部