Project1

标题: 关于 inject 的问题 [打印本页]

作者: simounF    时间: 2007-7-25 00:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: simounF    时间: 2007-7-25 00:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: K’    时间: 2007-7-25 00:55
[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 的区别都还混淆着。。

不过 加了那句之后貌似就不出错了 搬个凳子和楼主一起等解答

作者: simounF    时间: 2007-7-25 01:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2007-7-25 01:08
第一次时会将[]传入a, 将1传入item;
第二次执行的时候会将第一次执行的结果传入a,将第二个元素item,
依此类推,

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

例如

def test

p "step2 item1"

ebd

p test ==> "step2 item1",nil [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 美兽    时间: 2007-7-25 01:12
知道原理,就很容易实现了吧,
默认inject也是使用yield实现的。
作者: simounF    时间: 2007-7-25 01:19
提示: 作者被禁止或删除 内容自动屏蔽




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