Project1

标题: 为什么是参数? [打印本页]

作者: 九靈    时间: 2013-8-28 13:56
标题: 为什么是参数?
呃...实在不知道怎么问...
Game_Map
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 设置
  3.   #     map_id : 地图 ID
  4.   #--------------------------------------------------------------------------
  5.   def setup(map_id)
  6.     # 地图 ID 记录到 @map_id
  7.     @map_id = map_id
  8.     # 地图文件装载后、设置到 @map
  9.     @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))

Game_Map
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取地图 ID
  3.   #--------------------------------------------------------------------------
  4.   def map_id
  5.     return @map_id
  6.   end



问题 :
1. 48行的map_id 为什么是指参数? 而不是指方法?
(要是没参数的话就是指方法了)
2. 在有参数时要调用方法怎么办?(在不改方法名或参数名的情况下)
3. 参数优先是Ruby内定的吗?


例如restriction :
Game_Battler 1
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 可以行动判定
  3.   #--------------------------------------------------------------------------
  4.   def movable?
  5.     return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and restriction < 4)
  6.   end

Game_Battler 2
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取限制
  3.   #--------------------------------------------------------------------------
  4.   def restriction
  5.     restriction_max = 0
  6.     # 从当前附加的状态中获取最大的 restriction
  7.     for i in @states
  8.       if $data_states[i].restriction >= restriction_max
  9.         restriction_max = $data_states[i].restriction
  10.       end
  11.     end
  12.     return restriction_max
  13.   end

作者: IamI    时间: 2013-8-28 14:22
本帖最后由 IamI 于 2013-8-28 14:23 编辑

1、变量重名时局部变量优先,全世界通用。
     变量和方法重名时变量优先,少部分奇葩语言特有。
要调用方法,请使用map_id()
2、restriction有此局部变量则先调用局部变量,由于ruby的特性不会是实例变量,最后再调用方法。




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