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):
  1. class ActorSkill
  2.   attr_accessor   :use_cnt    # スキル使用回数
  3.   attr_accessor   :level      # スキルレベル
  4.   attr_accessor   :exp_list   # スキルEXPリスト
  5.   #--------------------------------------------------------------------------
  6.   # ● オブジェクト初期化
  7.   #--------------------------------------------------------------------------
  8. def initialize(skill_id, actor_id)
  9.     @skill_id = skill_id
  10.     @actor_id = actor_id
  11.     @use_cnt = 0
  12.     @level = 1
  13.     @hit = $data_skills[skill_id].hit
  14.     @exp_list = SkillUpdate.make_skill_list(skill_id, actor_id)
  15. end

  16. def reset_use
  17.     @use_cnt = @exp_list[@level]
  18. end

  19. def level=(new_level)   
  20.     return if new_level > SkillUpdate.skill_limit_lv(@skill_id, @actor_id)
  21.     return if new_level < 1
  22.     @level = new_level
  23.     reset_use
  24. end
  25. end
复制代码


这里def level=(new_level)的“=”是什么意思呢?

还请大家多多指教,多谢了!
作者: guoxiaomi    时间: 2021-12-11 19:59
没什么意思,方法名就是“level=”
以及ruby允许你在调用以“=”结尾的方法时,可以在“=”前面添加空格,比如下面两种写法是一样的效果
  1. a.level=(level)
复制代码
  1. a.level = level
复制代码





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