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

Project1

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

[已经解决] 关于[]

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
跳转到指定楼层
1
发表于 2013-8-25 01:18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

Game_Actors
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_Actors
  3. #------------------------------------------------------------------------------
  4. #  处理角色排列的类。本类的实例请参考
  5. #  $game_actors。
  6. #==============================================================================
  7.  
  8. class Game_Actors
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对像
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     @data = []
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 获取角色
  17.   #     actor_id : 角色 ID
  18.   #--------------------------------------------------------------------------
  19.   def [](actor_id)
  20.     if actor_id > 999 or $data_actors[actor_id] == nil
  21.       return nil
  22.     end
  23.     if @data[actor_id] == nil
  24.       @data[actor_id] = Game_Actor.new(actor_id)
  25.     end
  26.     return @data[actor_id]
  27.   end
  28. end

[](actor_id) 方法是怎么用? 是xxx.[](actor_id) 这样吗?

我找了个疑似是调用[](actor_id)的
Game_Party
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 设置初期同伴
  3.   #--------------------------------------------------------------------------
  4.   def setup_starting_members
  5.     @actors = []
  6.     for i in $data_system.party_members
  7.       @actors.push($game_actors[i])
  8.     end
  9.   end

中$game_actors[ i ] (是这个调用的吧...)
呃...[]是方法还是数组?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
2
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

开拓者

3
发表于 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:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
551 小时
注册时间
2012-8-18
帖子
1429
4
发表于 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 认可答案

查看全部评分

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 01:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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