Project1

标题: ……].max, 999].min是什么意思? [打印本页]

作者: fyws    时间: 2009-3-21 02:15
标题: ……].max, 999].min是什么意思?
看脚本头都大了,其他的还凑合,就是这个……].max, 999].min不知道什么意思
例子:
  #--------------------------------------------------------------------------
  # * Get Dexterity (DEX)
  #--------------------------------------------------------------------------
  def dex
    n = [[base_dex + @dex_plus, 1].max, 999].min
    for i in @states
      n *= $data_states.dex_rate / 100.0
    end
    n = [[Integer(n), 1].max, 999].min
    return n
  end [LINE]1,#dddddd[/LINE]此贴于 2009-3-20 21:37:05 被版主redant提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 八云紫    时间: 2009-3-21 02:18
n = [[base_dex + @dex_plus, 1].max, 999].min

这句要分开看, 先看一部分:

[base_dex + @dex_plus, 1].max

意思是说, 返回 base_dex + @dex_plus 和 1 中最大的那个数字。

然后 假设 a = [base_dex + @dex_plus, 1].max

再看这个:

n = [a, 999].min  

返回 a 和 999 最小的那个。

判断最大最小值用的。

[LINE]1,#dddddd[/LINE]

为什么要放在 [  ] 之间呢?
因为 max min 这两个方法只能在数组对象上使用, 如果不使用这两个方法的话,也可以这么写:

a = (base_dex + @dex_plus) > 1 ? base_dex + @dex_plus : 1
n = a > 999 ? 999 : a

再或者是:

if (base_dex + @dex_plus) > 1
  a = base_dex + @dex_plus
else
  a = 1
end
if a > 999
  n = 999
else
  n = a
end [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 未命名    时间: 2009-3-21 02:20
“MAX”……
这个似乎是说N的最大值为999吧。

N=灵敏度=整数
作者: TERENCE    时间: 2009-3-21 02:20
找出最大值 和 最小值
p [-5,7,99].max # 99
p [-5,7,99].min # -5
作者: 凌冰    时间: 2009-3-21 05:30
求数组的最大值和最小值的嵌套使用
如果有需要的话
[[[[……].max,……].max,……].min,……].min之类的也可以出现
作者: 神思    时间: 2009-3-21 05:33
美兽殿说过.这种方法选大小。消耗很大的说。。。
作者: fyws    时间: 2009-3-21 06:25
讲得很详细,多谢了




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