查看: 1614|回复: 6

关于 inject 的问题

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
回帖
214
发表于 2007-7-25 00:33:41 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
回帖
214
发表于 2007-7-25 00:33:41 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
梦石
0
星屑
431
在线时间
125 小时
注册时间
2006-11-2
回帖
1177
发表于 2007-7-25 00:55:32 | 显示全部楼层
[1,2,3].inject([]) do |a, item|
p "step1 item=#{item}",a

    a.push(item)
  
p "step2 item=#{item}",a
a = a
end


不懂诶。。基本米用过。。偶连inject 和 each 的区别都还混淆着。。

不过 加了那句之后貌似就不出错了 搬个凳子和楼主一起等解答
和记忆一起封存着的ID...
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
回帖
214
 楼主| 发表于 2007-7-25 01:06:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
回帖
3667

第1届短篇游戏比赛亚军

发表于 2007-7-25 01:08:01 | 显示全部楼层
第一次时会将[]传入a, 将1传入item;
第二次执行的时候会将第一次执行的结果传入a,将第二个元素item,
依此类推,

“p "step2 item=#{item}",a”的返回值为nil

例如

def test

p "step2 item1"

ebd

p test ==> "step2 item1",nil
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
纵然千里外,我等雁归来。
回复

使用道具 举报

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
回帖
3667

第1届短篇游戏比赛亚军

发表于 2007-7-25 01:12:10 | 显示全部楼层
知道原理,就很容易实现了吧,
默认inject也是使用yield实现的。
纵然千里外,我等雁归来。
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
回帖
214
 楼主| 发表于 2007-7-25 01:19:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部