Project1

标题: Game_Actor中有一段这样的代码 [打印本页]

作者: NaturalBlue    时间: 2009-2-7 05:34
标题: Game_Actor中有一段这样的代码
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是什么方法?它在脚本的哪部分?)
[LINE]1,#dddddd[/LINE]
这句:for item in equips.compact do n += item.atk end
可以理解成如下吗?
for item in equips.compact
n += item.atk
end
[LINE]1,#dddddd[/LINE]
谢谢!{/hx} [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: njx937    时间: 2009-2-7 19:48
compact 在帮助文件【标准函数库】【内建类】【object】【array】里面
就是跳过 nil的部分,因为为nil就是没有嘛。。
不跳过会出错
so 看看帮助文件就行
下面那理解应该是对的吧。。。个人认为 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: NaturalBlue    时间: 2009-2-8 01:20
以下引用njx937于2009-2-7 11:48:41的发言:
compact 在帮助文件【标准函数库】【内建类】【object】【array】里面
就是跳过 nil的部分,因为为nil就是没有嘛。。
不跳过会出错

还有一个compact!,和compact有一点混淆,能在详细说一下吗?
谢谢!{/hx}
作者: njx937    时间: 2009-2-8 07:03
以下引用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部分,原数组不变
作者: NaturalBlue    时间: 2009-2-8 07:07
以下引用njx937于2009-2-7 23:03:27的发言:

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

[LINE]1,#dddddd[/LINE]
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?
作者: njx937    时间: 2009-2-8 07:17
最后一行,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
作者: NaturalBlue    时间: 2009-2-8 07:34
非常感谢njx937的帮助!{/hx}




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