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的时候使用:
array2 = array.compact
a = array2.min
b = array2.max
复制代码
如果在取值之前就得把nil去掉的话,使用:
array.compact!
a = array.max
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