查看: 1743|回复: 6

Game_Actor中有一段这样的代码

  [复制链接]
梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
回帖
199
发表于 2009-2-7 05:34:52 | 显示全部楼层 |阅读模式

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

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

×
Game_Actor中有一段这样的代码:
  #--------------------------------------------------------------------------
  # ● 获取基本攻击力
  #--------------------------------------------------------------------------
  def base_atk
    n = actor.parameters[2, @level]
    for item in equips.compact do n += item.atk end
    return n
  end

其中equips.compact的equips和compact分别代表什么?
(compact是什么方法?它在脚本的哪部分?)


这句:for item in equips.compact do n += item.atk end
可以理解成如下吗?
for item in equips.compact
n += item.atk
end


谢谢!{/hx}
版务信息:本贴由楼主自主结贴~
梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
回帖
224
发表于 2009-2-7 19:48:41 | 显示全部楼层
compact 在帮助文件【标准函数库】【内建类】【object】【array】里面
就是跳过 nil的部分,因为为nil就是没有嘛。。
不跳过会出错
so 看看帮助文件就行
下面那理解应该是对的吧。。。个人认为
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
我。。不是寂寞。。
回复

使用道具 举报

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
回帖
199
 楼主| 发表于 2009-2-8 01:20:08 | 显示全部楼层
以下引用njx937于2009-2-7 11:48:41的发言:
compact 在帮助文件【标准函数库】【内建类】【object】【array】里面
就是跳过 nil的部分,因为为nil就是没有嘛。。
不跳过会出错

还有一个compact!,和compact有一点混淆,能在详细说一下吗?
谢谢!{/hx}
回复

使用道具 举报

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
回帖
224
发表于 2009-2-8 07:03:27 | 显示全部楼层
以下引用NaturalBlue于2009-2-7 17:20:08的发言:


以下引用njx937于2009-2-7 11:48:41的发言:
compact 在帮助文件【标准函数库】【内建类】【object】【array】里面
就是跳过 nil的部分,因为为nil就是没有嘛。。
不跳过会出错


还有一个compact!,和compact有一点混淆,能在详细说一下吗?
谢谢!

compact!照帮助文件就是处理数组,把nil都删去,生成新的,数组变了
XXX.compact 就是使用数组的非nil部分,原数组不变
我。。不是寂寞。。
回复

使用道具 举报

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
回帖
199
 楼主| 发表于 2009-2-8 07:07:55 | 显示全部楼层
以下引用njx937于2009-2-7 23:03:27的发言:

compact!照帮助文件就是处理数组,把nil都删去,生成新的,数组变了
XXX.compact 就是使用数组的非nil部分,原数组不变



ary = [1, nil, 2, nil, 3, nil]
p ary.compact         # => [1, 2, 3]
p ary                 # => [1, nil, 2, nil, 3, nil]
ary.compact!
p ary     # => [1, 2, 3]
p ary.compact!        # => nil

最后一行,ary.compact!为什么为nil?
回复

使用道具 举报

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
回帖
224
发表于 2009-2-8 07:17:26 | 显示全部楼层
最后一行,ary.compact!为什么为nil?
  1. /*
  2. *  call-seq:
  3. *     array.compact!    ->   array  or  nil
  4. *
  5. *  Removes +nil+ elements from array.
  6. *  Returns +nil+ if no changes were made.
  7. *
  8. *     [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ]
  9. *     [ "a", "b", "c" ].compact!           #=> nil
  10. */
复制代码

这是ruby的c语言版解说XXX.compact! 返回没nil数组,原本没nil就返回nil
我。。不是寂寞。。
回复

使用道具 举报

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
回帖
199
 楼主| 发表于 2009-2-8 07:34:42 | 显示全部楼层
非常感谢njx937的帮助!{/hx}
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部