设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1652|回复: 7
打印 上一主题 下一主题

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5639
在线时间
958 小时
注册时间
2015-2-6
帖子
161

开拓者

跳转到指定楼层
1
发表于 2016-9-4 16:28:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

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


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

点评

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

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

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2016-9-4 20:15:39 | 只看该作者
本帖最后由 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)

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

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

2
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 05:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表