查看: 1866|回复: 1

[已经过期] 始终没办法理解SELF的用法

[复制链接]
梦石
0
星屑
50
在线时间
20 小时
注册时间
2013-10-4
回帖
4
发表于 2013-10-23 21:25:17 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 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变化的话,读取到的信息分别为什么
梦石
0
星屑
3703
在线时间
3081 小时
注册时间
2011-11-17
回帖
943
发表于 2013-10-23 23:43:09 | 显示全部楼层
本帖最后由 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 也就是对应数据库的状态编号

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 认可答案

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部