查看: 1975|回复: 7

[已经解决] 如何删除数组中的特定元素

[复制链接]
梦石
0
星屑
5816
在线时间
971 小时
注册时间
2015-2-6
回帖
123

开拓者

发表于 2016-9-4 16:28:38 | 显示全部楼层 |阅读模式

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

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

×
自改脚本
[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
或者有什么方法能够只读取数组中的数字元素


如果能帮忙优化下脚本就更好了(拍飞)

点评

更新答案  发表于 2016-9-7 13:11
此书生之言,可言而不可用也 ↑-_-||

仓管610早晚班,没多余精力做别的了 →_→

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2016-9-4 17:06:14 | 显示全部楼层
如果要保留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
复制代码

点评

感谢,问题解决。  发表于 2016-9-7 12:42

评分

参与人数 2星屑 +270 梦石 +1 收起 理由
RaidenInfinity + 250 + 1 楼主认可的解答
戏蹑群星斗 + 20 认可答案

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2016-9-4 20:15:39 | 显示全部楼层
本帖最后由 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]

点评

受教了  发表于 2016-9-7 17:49
你一说突然想起来直接把": nil"删了好像就可以了Σ( ° △ °|||)︴  发表于 2016-9-4 21:29
因为不熟悉脚本所以绕了弯路╮(╯_╰)╭  发表于 2016-9-4 21:25

评分

参与人数 1星屑 +10 收起 理由
戏蹑群星斗 + 10 虽然依旧不知道该怎么做……

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部