`
iandaicsu
  • 浏览: 52091 次
社区版块
存档分类
最新评论

Ruby中的inject

    博客分类:
  • Ruby
 
阅读更多

结论:

 

 

[1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10   

    inject带有一个参数和block。block中的两个参数是有含义的。第一个参数reslut在inject第一次执行block时把inject带的参数付值给它,element就是数组中的元素,该例中inject一共执行4次block,每次执行block完后,最后语句的结果再付值给result,如此循环,直到遍历数组中所有元素。 

 

 

[1, 2, 3, 4].inject{ |result, element| result + element } 

        inject可以不带参数,此时result的初始值为数组元素的第一个值。这时执行block的次数为3次。 

 

来源 ruby-inject 

 

    Ruby-doc给出的一个示例用法:

 

# find the longest word
longest = %w{ cat sheep bear }.inject do |memo,word|
   memo.length > word.length ? memo : word
end
longest                                       #=> "sheep"
 

 
分享到:
评论

相关推荐

    gr8:将Ruby功能(map,select,inject,grep等)带到您的命令行

    使用Gr8,您可以在命令行中使用map,select,inject,grep,max,min,...。安装$ gem install gr8或者: $ curl -o gr8 http://j.mp/Gr8_rb$ chmod a+x gr8$ sudo mv gr8 /usr/local/binGr8需要Ruby(> = 2.0)。...

    inject-some-sql:将SQL注入Ruby on Rails应用程序中很有趣!

    cd inject-some-sql/rails5在子目录中,安装依赖项并设置数据库: bundle installrake db:setup db:seed跑典型的Rails开始: rails s在浏览器中打开 。重置数据库使用SQL注入很容易使数据库混乱。 服务器确实会在...

    inject-rewrite:创客学院

    将解决方案推送到名为“inject-rewrite”的 Github 存储库###执行第一项工作是重新阅读并完全理解 Ruby 中的注入(AKA reduce )方法,我认为它与此定义接近: 本机方法作用于可枚举对象,并接受一个参数和一个...

    custom_ruby_enumerables:此应用程序是使用用户自定义代码实现内置Ruby枚举器的演示。

    Ruby自定义可枚举方法内容| | | |关于该项目是一个微型宇宙合作项目,是Ruby部分中微型宇宙技术课程要求的一部分。 该项目由不同的ruby可枚举方法组成,这些方法可模仿Ruby的内置可枚举方法方法下面列出了创建的...

    Inject:挑战#4 Makers Academy

    重写注入方法概要重写 Array 类的注入方法使用的技术RubyRSPEC... 我发现自己试图在各种情况下使用 .inject,即使是那些绝对适用的情况。 我敢肯定,这是几天内使用一种方法如此紧密而强烈地工作的可预测和暂时的效果。

    interrotron:在Ruby中用于安全规则评估的(不完整)lisp

    旋流器 一个简单的非图灵完整lisp,意在作为规则引擎嵌入到应用程序中。 它的设计旨在限制受评估代码的危害(与纯Ruby“ eval”相反),并且被限制为: 默认情况下完全沙箱化总是完成执行(没有无限循环) 让您轻松...

    automatic_software_repair_eci:Ruby 自动软件修复工具原型

    举个例子:对于迭代上使用一个收集元件each在Ruby(或do:在Smalltalk中),而不是for环路,用于从使用一个列表的过滤元件select或reject使用谓词作为参数,用于计算经常使用集合的每个元素的累积结果inject (或...

    hash_filter:简单的 ruby​​ 哈希过滤器

    安装将此行添加到应用程序的 Gemfile 中: gem 'hash_filter'然后执行: $ bundle或者自己安装: $ gem install hash_filter用法 remove_images = HashFilter . new do delete / \. jpg$/ delete / \. png$/ delete ...

    Inject_Rewrite:创客学院

    Inject 然后将遍历数组中的每个(后续)元素,并对由块定义的每次迭代执行计算(例如,累加器可以由被调用的元素递增)。 然后重置累加器值以从该计算中获取返回值。 下面复制一个例子,它会处理所有元素的总和并取...

    modifiers:Ruby 方法修饰符

    具体来说,在 Ruby 术语中,它们是类方法,它们: 取一个符号参数,它命名同一个类的实例方法,和返回相同的符号,但导致对命名方法的后续调用以某种方式更改。 这个库.为什么是/是修饰符? 对 DRY 代码的追求可能...

    inject-rewrite:重写 INJECT 方法。 任务1。 创客学院的 Week_2 挑战!

    ####Task_1, Week_2 在 Makers Academy 目标是使用两种方法重写 Array 类的 Inject 方法: 使用迭代器使用递归为了... 在 irb 中运行我的注入: require './lib/my_inject_recusion'require './lib/my_inject_iterator'

    inject-rewrite:创客学院第 2 周挑战

    不要担心返回枚举器,假设块总是以不同的方式命名您的方法(即,不是inject() 或子类Array),因为rspec 在内部使用inject(),因此除非您的实现,否则测试将失败并显示奇怪的消息注入是完美的。 如果您想要挑战,...

    square_array-ruby-apply-000

    Google Ruby的指数运算符,或参考上一课中有关简单数学的内容。先进的一旦测试通过,请查看是否可以使用更高级别的迭代器(例如.collect 。期望例子numbers = [ 1 , 2 , 3 ]square_array ( numbers )# => [1,4,9])...

    Inject-Challenge:重写注入方法(创客学院第 2 周)

    不要担心返回枚举器,假设块总是以不同的方式命名您的方法(即,不是inject() 或子类Array),因为rspec 在内部使用inject(),因此除非您的实现,否则测试将失败并显示奇怪的消息注入是完美的。 如果您想要挑战,请...

    inject-rewrite_Week-2

    我的注入方法[创客学院]第二周挑战赛( ) 重写 ruby​​ 注入方法,保留功能。 简单的! 你可以找到本周的项目和其他挑战,,如果你有兴趣。

    enumerable-methods

    该项目展示了Ruby Enumerable模块中方法的重建列表。 重写的Enumerable方法是: 每个-> my_each each_with_index->​​ my_each_with_index 选择-> my_select 全部? -> my_all? 任何? -> my_any? 没有...

    pinball:简单的IOCRuby容器和DI工具

    弹球用于Ruby的简单IOC容器和DI工具。 Pinball是一个用于在Ruby应用程序中使用... configure do define :repository , Repositoryend 然后,我们使用inject声明在Service类中声明repository依赖关系。 class Service

    BSQLinjector:用Ruby编写的盲SQL注入开发工具

    --file Mandatory - File containing valid HTTP request and SQL injection point (SQLINJECT). (--file=/tmp/req.txt) --pattern Mandatory - Pattern to look for when query is true. (--pattern=...

    duplicates_benchmark:对一个技术面试问题的几个回答的检查

    从这个神秘的 Ruby 函数开始: def function(a)a.inject({}){ |a,b| a[b] = a[b].to_i + 1; a}.\reject{ |a,b| b == 1 }.keysend或者,如果你愿意,这个同样令人费解的 Python 函数: def function(a): def f1(a, b...

    ios-inject-grail:适用于iOS和Mac的简易依赖注入框架

    生成的代码中的注释和其他可读性方面的改进, Sourcery模板中的可读性改进, 基本框架信息。 为什么,灵感等... 如果您愿意提供帮助,请务必加入! 我们对公关开放。 TL; DR 这个 class MessagesViewController ...

Global site tag (gtag.js) - Google Analytics