Project1
标题: 为什么是参数? [打印本页]
作者: 九靈 时间: 2013-8-28 13:56
标题: 为什么是参数?
呃...实在不知道怎么问...
Game_Map
#--------------------------------------------------------------------------
# ● 设置
# map_id : 地图 ID
#--------------------------------------------------------------------------
def setup(map_id)
# 地图 ID 记录到 @map_id
@map_id = map_id
# 地图文件装载后、设置到 @map
@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
#--------------------------------------------------------------------------
# ● 设置
# map_id : 地图 ID
#--------------------------------------------------------------------------
def setup(map_id)
# 地图 ID 记录到 @map_id
@map_id = map_id
# 地图文件装载后、设置到 @map
@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
Game_Map
#--------------------------------------------------------------------------
# ● 获取地图 ID
#--------------------------------------------------------------------------
def map_id
return @map_id
end
#--------------------------------------------------------------------------
# ● 获取地图 ID
#--------------------------------------------------------------------------
def map_id
return @map_id
end
问题 :
1. 48行的map_id 为什么是指参数? 而不是指方法?
(要是没参数的话就是指方法了)
2. 在有参数时要调用方法怎么办?(在不改方法名或参数名的情况下)
3. 参数优先是Ruby内定的吗?
例如restriction :
Game_Battler 1
#--------------------------------------------------------------------------
# ● 可以行动判定
#--------------------------------------------------------------------------
def movable?
return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and restriction < 4)
end
#--------------------------------------------------------------------------
# ● 可以行动判定
#--------------------------------------------------------------------------
def movable?
return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and restriction < 4)
end
Game_Battler 2
#--------------------------------------------------------------------------
# ● 获取限制
#--------------------------------------------------------------------------
def restriction
restriction_max = 0
# 从当前附加的状态中获取最大的 restriction
for i in @states
if $data_states[i].restriction >= restriction_max
restriction_max = $data_states[i].restriction
end
end
return restriction_max
end
#--------------------------------------------------------------------------
# ● 获取限制
#--------------------------------------------------------------------------
def restriction
restriction_max = 0
# 从当前附加的状态中获取最大的 restriction
for i in @states
if $data_states[i].restriction >= restriction_max
restriction_max = $data_states[i].restriction
end
end
return restriction_max
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 |