gpt4 book ai didi

ruby - 这个 ruby​​ 注入(inject)魔术是如何工作的?

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:27 25 4
gpt4 key购买 nike

我今天看到了一个 ruby​​ 代码片段。

[1,2,3,4,5,6,7].inject(:+)  

=> 28

[1,2,3,4,5,6,7].inject(:*)  

=> 5040

这里的注入(inject)和之前看到的完全不一样,比如

[1,2,3,4,5,6,7].inject {|sum, x| sum + x}

请解释一下它是如何工作的?

最佳答案

没有魔法,符号(方法)只是可能的参数之一。这是来自文档:

  # enum.inject(initial, sym) => obj
# enum.inject(sym) => obj
# enum.inject(initial) {| memo, obj | block } => obj
# enum.inject {| memo, obj | block } => obj

我们的案例是第二种。

也可以用传统的block重写:

op = :+   #  parameter of inject call
[1,2,3,4,5,6,7].inject {|sum, x| sum.send(op, x)} # also returns 28

(回答“它是如何工作的”部分)

关于ruby - 这个 ruby​​ 注入(inject)魔术是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com