Project1
标题:
请教def 方法名中带有“=()”是什么意思
[打印本页]
作者:
taeckle
时间:
2021-12-11 19:43
标题:
请教def 方法名中带有“=()”是什么意思
本帖最后由 taeckle 于 2021-12-11 19:44 编辑
咱目前知道可以用
def 方法名 end
或者
def 方法名(参数) end
定义一个方法,不过最近读某位远古大神的代码发现了个
def 方法名=(***)
end
定义了一个方法, 比如这个技能等级脚本里的def level=(new_level):
class ActorSkill
attr_accessor :use_cnt # スキル使用回数
attr_accessor :level # スキルレベル
attr_accessor :exp_list # スキルEXPリスト
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(skill_id, actor_id)
@skill_id = skill_id
@actor_id = actor_id
@use_cnt = 0
@level = 1
@hit = $data_skills[skill_id].hit
@exp_list = SkillUpdate.make_skill_list(skill_id, actor_id)
end
def reset_use
@use_cnt = @exp_list[@level]
end
def level=(new_level)
return if new_level > SkillUpdate.skill_limit_lv(@skill_id, @actor_id)
return if new_level < 1
@level = new_level
reset_use
end
end
复制代码
这里def level=(new_level)的“
=
”是什么意思呢?
还请大家多多指教,多谢了!
作者:
guoxiaomi
时间:
2021-12-11 19:59
没什么意思,方法名就是“level=”
以及ruby允许你在调用以“=”结尾的方法时,可以在“=”前面添加空格,比如下面两种写法是一样的效果
a.level=(level)
复制代码
a.level = level
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1