Project1

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

作者: 戏蹑群星斗    时间: 2016-9-4 16:28
标题: 如何删除数组中的特定元素
自改脚本
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取属性的最大修正值,返回所有属性中最有效的一个
  4.   #     elements : 属性 ID 数组
  5.   # 再定义:物理魔法属性区分 by 戏蹑群星斗
  6.   #--------------------------------------------------------------------------
  7.   def elements_max_rate(elements)
  8.     return 1.0 if elements.empty?
  9.     m = elements.inject([]) {|r, i| r.push(i < 5 ?element_rate(i) : nil) }
  10.     n = elements.inject([]) {|r, i| r.push(i >= 5 ?element_rate(i) : nil) }
  11. #~     n = elements.inject([]) {|r, i| r.push(element_rate(i)) }
  12.     p m;p n
  13.     wuli = m.max
  14.     mofa = n.min
  15.     wuli = 1.0 if wuli.nil?
  16.     mofa = 1.0 if mofa.nil?
  17.     return wuli * mofa
  18.     end
  19.   end
  20. end


因为要使用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 加入数组吧?

举个例子来说,可以这么写。不明白原来那段脚本是什么意思的话,直接按照自己的想法重新写就好了
RUBY 代码复制
  1. wuli = mofa = nil
  2. elements.each do |i|
  3.   r = element_rate(i)
  4.   if i < 5
  5.     wuli = r if wuli > r
  6.   else
  7.     mofa = r if mofa < r
  8.   end
  9. end
  10.  
  11. (wuli || 1) * (mofa || 1)





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