Project1

标题: 谁能解释下这个@list[index][:enabled] [打印本页]

作者: 九靈    时间: 2014-8-6 18:28
标题: 谁能解释下这个@list[index][:enabled]
本帖最后由 九靈 于 2014-8-6 18:34 编辑

RUBY 代码复制
  1. Window_Selectable
  2. #--------------------------------------------------------------------------
  3.   # ● 按下确定键时的处理
  4.   #--------------------------------------------------------------------------
  5.   def process_ok
  6.     if current_item_enabled?
  7.       Sound.play_ok
  8.       Input.update
  9.       deactivate
  10.       call_ok_handler
  11.     else
  12.       Sound.play_buzzer
  13.     end
  14.   end
  15. #--------------------------------------------------------------------------
  16.   # ● 获取选择项目的有效状态
  17.   #--------------------------------------------------------------------------
  18.   def current_item_enabled?
  19.     return true
  20.   end

RUBY 代码复制
  1. Window_Command < Window_Selectable
  2. #--------------------------------------------------------------------------
  3.   # ● 获取选项的有效状态
  4.   #--------------------------------------------------------------------------
  5.   def current_item_enabled?
  6.     current_data ? current_data[:enabled] : false
  7.   end
  8.   #--------------------------------------------------------------------------
  9.   # ● 获取选项的指令数据
  10.   #--------------------------------------------------------------------------
  11.   def current_data
  12.     index >= 0 ? @list[index] : nil
  13.   end



current_data[:enable]
@list[index]


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

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

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

RUBY 代码复制
  1. def add_command(name, symbol, enabled = true, ext = nil)
  2.     @list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext})
  3.   end


作者: taroxd    时间: 2014-8-6 18: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(一个哈希表)
作者: 喵呜喵5    时间: 2014-8-6 18:55
https://rpg.blue/forum.php?mod=v ... p;page=1#pid2519111

第二个
作者: 九靈    时间: 2014-8-6 19:04
taroxd 发表于 2014-8-6 18:50
先推荐你一本书:https://rpg.blue/thread-315743-1-1.html
你的问题在里面有所解释

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

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





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1