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

Project1

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

[已经解决] 请教inject、select、collect的用法

[复制链接]

Lv2.观梦者

梦石
0
星屑
810
在线时间
173 小时
注册时间
2008-11-22
帖子
112
跳转到指定楼层
1
发表于 2012-2-2 18:41:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Game_BattlerBase中看到了以下几个方法,但由于我的基础差看不懂,所以向各位求教。
希望各位能给我讲下以下这些的意思,谢谢
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取当前状态的实例数组
  3.   #--------------------------------------------------------------------------
  4.   def states
  5.     @states.collect {|id| $data_states[id] }
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 获取所有特性实例的数组
  9.   #--------------------------------------------------------------------------
  10.   def all_features
  11.     feature_objects.inject([]) {|r, obj| r + obj.features }
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 获取特性实例的数组(限定特性代码)
  15.   #--------------------------------------------------------------------------
  16.   def features(code)
  17.     all_features.select {|ft| ft.code == code }
  18.   end
复制代码
又不知道干什么好了。。。

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

2
发表于 2012-2-2 20:00:17 | 只看该作者
inject
首次运算时将inject的参数带入块中第一个参数,数组中的元素依次代入块中的第二个参数中,并做块中定义的运算。比如
  1. a=[1, 2, 3]
  2. b = a.inject(5) { |r, o| r+ o} # b => 11
  3. 相当于
  4. r=5
  5. o=1
  6. r=r+o
  7. o=2
  8. r=r+o
  9. o=3
  10. r=r+o  # 11
复制代码
select
保留数组中满足块中表达式的元素,简单说就是过滤。
  1. a = [1,2,3,4,5,6,7]
  2. b = a.select{|o| o%2 == 0} # b => [2,4,6]
复制代码
collect
可以让数组中的元素依次带入到块中的运算后,生成一个新数组。
  1. a = [1,2,3]
  2. b=a.collect{|o| o.to_s}  # b => ["1", "2", "3"]
复制代码

点评

太感谢了  发表于 2012-2-2 20:04
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 15:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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