查看: 2073|回复: 3

[已经解决] 谁能解释下这个@list[index][:enabled]

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

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

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

×
本帖最后由 九靈 于 2014-8-6 18:34 编辑

[pre lang="ruby" line="1"]  Window_Selectable
#--------------------------------------------------------------------------
  # ● 按下确定键时的处理
  #--------------------------------------------------------------------------
  def process_ok
    if current_item_enabled?
      Sound.play_ok
      Input.update
      deactivate
      call_ok_handler
    else
      Sound.play_buzzer
    end
  end
#--------------------------------------------------------------------------
  # ● 获取选择项目的有效状态
  #--------------------------------------------------------------------------
  def current_item_enabled?
    return true
  end
[/pre]
[pre lang="ruby" line="1"]  Window_Command < Window_Selectable
#--------------------------------------------------------------------------
  # ● 获取选项的有效状态
  #--------------------------------------------------------------------------
  def current_item_enabled?
    current_data ? current_data[:enabled] : false
  end
  #--------------------------------------------------------------------------
  # ● 获取选项的指令数据
  #--------------------------------------------------------------------------
  def current_data
    index >= 0 ? @list[index] : nil
  end
[/pre]


current_data[:enable]
@list[index]


@list[index][:enabled]
这是什么?
应该会返回True

@list[index]
的index也是方法?还是变量?

current_data[:enable]
为什么是Symbol?
为什么是enable?

[pre lang="ruby" line="1"]  def add_command(name, symbol, enabled = true, ext = nil)
    @list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext})
  end
[/pre]

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-8-6 18:50:50 | 显示全部楼层
本帖最后由 taroxd 于 2014-8-6 18:54 编辑

先推荐你一本书:https://rpg.blue/thread-315743-1-1.html
你的问题在里面有所解释

@list 是由一个哈希表构成的数组,每一个都形如这个格式:{:name=>'名字', :symbol=>:符号, :enabled=>是否可用,true或false, :ext=>"任意扩展信息'}

@list[index][:enabled] 先对@list索引第index位置的元素,也就是一个哈希表。然后用 :enabled 索引该哈希表

index 为方法。当你没有找到为局部变量赋值的语句时都被解释为方法。该方法是在 Window_Selectable 中用 attr_reader 定义的

current_data[:enable] 用一个 symbol 索引 current_data(一个哈希表)
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-8-6 18:55:18 | 显示全部楼层

点评

谢谢!我看懂了!  发表于 2014-8-6 19:45

评分

参与人数 1星屑 +150 收起 理由
taroxd + 150 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
 楼主| 发表于 2014-8-6 19:04:44 | 显示全部楼层
taroxd 发表于 2014-8-6 18:50
先推荐你一本书:https://rpg.blue/thread-315743-1-1.html
你的问题在里面有所解释

感谢!
URG3我看完了
似乎有讲到这个...

可能是我对哈希不熟
不太能转过来...
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部