Project1

标题: 如何删除数组中的特定元素 [打印本页]

作者: 戏蹑群星斗    时间: 2016-9-4 16:28
标题: 如何删除数组中的特定元素
自改脚本
[pre lang="ruby"]class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 获取属性的最大修正值,返回所有属性中最有效的一个
  #     elements : 属性 ID 数组
  # 再定义:物理魔法属性区分 by 戏蹑群星斗
  #--------------------------------------------------------------------------
  def elements_max_rate(elements)
    return 1.0 if elements.empty?
    m = elements.inject([]) {|r, i| r.push(i < 5 ?element_rate(i) : nil) }
    n = elements.inject([]) {|r, i| r.push(i >= 5 ?element_rate(i) : nil) }
#~     n = elements.inject([]) {|r, i| r.push(element_rate(i)) }
    p m;p n
    wuli = m.max
    mofa = n.min
    wuli = 1.0 if wuli.nil?
    mofa = 1.0 if mofa.nil?
    return wuli * mofa
    end
  end
end[/pre]

因为要使用max方法数组中不能有nil
或者有什么方法能够只读取数组中的数字元素


如果能帮忙优化下脚本就更好了(拍飞)
作者: cinderelmini    时间: 2016-9-4 17:06
如果要保留nil的话,就在取min或者max的时候使用:
  1. array2 = array.compact
  2. a = array2.min
  3. b = array2.max
复制代码

如果在取值之前就得把nil去掉的话,使用:
  1. array.compact!
  2. a = array.max
  3. b = array.min
复制代码


作者: taroxd    时间: 2016-9-4 20:15
本帖最后由 taroxd 于 2016-9-7 13:12 编辑

一开始就没有必要把 nil 加入数组吧?

举个例子来说,可以这么写。不明白原来那段脚本是什么意思的话,直接按照自己的想法重新写就好了
[pre lang="ruby"]wuli = mofa = nil
elements.each do |i|
  r = element_rate(i)
  if i < 5
    wuli = r if wuli > r
  else
    mofa = r if mofa < r
  end
end

(wuli || 1) * (mofa || 1)[/pre]




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