Project1

标题: 始终没办法理解SELF的用法 [打印本页]

作者: dongzi416    时间: 2013-10-23 21:25
标题: 始终没办法理解SELF的用法
本帖最后由 dongzi416 于 2013-10-23 21:29 编辑

如下所示:设置MAXHP
def maxhp=(maxhp)
    @maxhp_plus += maxhp - self.maxhp   
@maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min
    @hp = [@hp, self.maxhp].min
  end
请问有颜色的字具体怎么理解,怎么运算?


另外
def maxsp
    n = [[base_maxsp + @maxsp_plus, 0].max, 9999].min
    for i in @states
      n *= $data_states 【i】. maxsp_rate / 100.0
    end
    n = [[Integer(n), 0].max, 9999].min
    return n
  end
里的$data_states【i】表示状态的意思,如果i变化的话,读取到的信息分别为什么

作者: yagami    时间: 2013-10-23 23:43
本帖最后由 yagami 于 2013-10-23 23:56 编辑

其实传参换下就好理解了
def maxhp=(x)
    @maxhp_plus += x - self.maxhp   #self.maxhp  实例调用maxhp 函数 由于原RGSS传参也是maxhp 才显式加self的
   #@maxhp_plus += x - maxhp  我用x做传参 就不会产生歧义了 所以这时self其实写不写都无所谓
    @maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min
    @hp = [@hp, self.maxhp].min
end


在add_state 里 可以看到这句 @states.push(state_id)  所以不难猜测出@states数组里的元素 应该都是整型
假设@states=[1,3,7] 那么这个for循环就会依次取出$data_states[1] $data_states[3]  $data_states[7]  做下面的事情
$data_states  就是 $data_states数组里 i号位置的元素
这个数组保存的是State的实例的地址
取出来是个State类的实例 i 也就是对应数据库的状态编号




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