查看: 2516|回复: 3

[已经解决] 关于[]

[复制链接]
梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
发表于 2013-8-25 01:18:09 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 九靈 于 2013-8-25 23:28 编辑

Game_Actors
[pre lang="ruby" line="1"]#==============================================================================
# ■ Game_Actors
#------------------------------------------------------------------------------
#  处理角色排列的类。本类的实例请参考
#  $game_actors。
#==============================================================================

class Game_Actors
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● 获取角色
  #     actor_id : 角色 ID
  #--------------------------------------------------------------------------
  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
end
[/pre]
的[](actor_id) 方法是怎么用? 是xxx.[](actor_id) 这样吗?

我找了个疑似是调用[](actor_id)的
Game_Party
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 设置初期同伴
  #--------------------------------------------------------------------------
  def setup_starting_members
    @actors = []
    for i in $data_system.party_members
      @actors.push($game_actors)
    end
  end
[/pre]
中$game_actors[ i ] (是这个调用的吧...)
呃...[]是方法还是数组?
梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
回帖
550
发表于 2013-8-25 03:10:15 | 显示全部楼层
以下内容来自F1帮助

# 单项+/-
def +@
def -@

# 给要素赋值
def foo=(value)             # obj.foo = value

# [] と []=
def [](key)                 # obj[key]
def []=(key, value)         # obj[key] = value
def []=(key, key2, value)   # obj[key, key2] = value

点评

按住ctrl+滚轮上滑字就变大了= =  发表于 2013-8-25 16:32
哦...原来F1有(F1字太小没仔细看)  发表于 2013-8-25 15:58

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
回帖
1643

开拓者

发表于 2013-8-25 14:18:44 | 显示全部楼层
首先回答最后一个问题,[]是一个空数组,@actors.push($game_actors)是指(先将 i 赋值从数据文件(Actors.rxdata)中获取的角色信息,然后)用.push方法向@actors添加角色补满数组,如果初期角色没有的话就会返回一个nil。
至于第一个问题LS回答了。。

点评

也就是说...变量调用"[]"方法特称为"数组"...是这样吗?  发表于 2013-8-25 16:14

评分

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

查看全部评分


  -fk: -azogi:
回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2013-8-25 15:17:49 | 显示全部楼层
[]方法的定义有三种调用方法
1.self[参数1,参数2......]
2.self.[](参数1,参数2......)
3.用send方法调用【这里不讨论
同理 []=方法也有三种
1.self[参数1,参数2......]=参数n
  我们讨论一下这种情况的其他写法(定义是def []=(*args),可以提供任意的参数)
  ①.self[1,2]=       #刚才在RGE中测试,方法没有调用成功
  ②.self[]=            #刚才在RGE中测试,方法没有调用成功,并不是不带参数的调用
  ③.self[1,2]=3,4   #调用的参数是 1,2,[3,4] 而不是1,2,3,4
  可见,调用[]=必须在等号后面带一个参数,而且只能带一个
2.self.[]=(参数1,参数2......) 这个是标准的调用方式,绝不会出问题
3.使用send方法【不讨论

当然,这是调用方法的时候
如果是 a = []这种形式,编译器不会认为是 a= self.[]()这种形式,而是直接返回空数组

……感觉说的乱糟糟的,LZ尝试着理解吧= =

点评

有关RGE请看RM原创发布区的子版块,至于*的用法……比较那啥,等需要的时候你再问吧= =  发表于 2013-8-25 16:23
题外话..."RGE"是啥? 还有def []=(*args) "*"这有特别意义吗?(看过很多次了)  发表于 2013-8-25 16:12
表示理解...  发表于 2013-8-25 16:10

评分

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

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部