Oxida.s Blog

BLOG.OXIDA.CN
热爱与温柔
  1. 首页
  2. 产品经理
  3. 正文

Ruby中map, select, collect, inject, detect 和each的区别

2021年2月11日 234点热度 1人点赞 0条评论

ruby中的一切都是对象。Ruby支持许多方法,其中一个任务可以使用多种方法或方式完成。数组是一个对象,其map,each,select,collect,inject,detect是用于一个数组对象的ruby方法。让我们了解这些方法。

一.Map

Map获取可枚举对象和块,为每个元素计算块,然后返回包含计算值的新数组。

[1,2,3,4,5,6,7,8,9,10].map{ |e| e * 5 }
# =>  [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

如果你尝试使用map来选择任何特定值,例如e <= 3,那么它将对比每个元素并仅输出结果为true或false

[1,2,3,4,5,6,7,8,9,10].map{ |e| e <= 3 }
# =>  [true, true, true, false, false, false, false, false, false, false]

二.Select

使用Select块计算数组中的每个元素,并把返回为ture的值.

[1,2,3,4,5,6,7,8,9,10].select{ |e| e > 5 }
# =>  [6 ,7, 8, 9, 10]

而且,select会返回一个语句为true的元素。

[1,2,3,4,5,6,7,8,9,10].select{ |e| e * 3 }
# => [1,2,3,4,5,6,7,8,9,10]

三.Collect

Collect类似于Map,它接受可枚举对象和块,为每个元素计算块,然后返回带有计算值的新数组。

[1,2,3,4,5,6,7,8,9,10].collect{ |e| e * 5 }
# =>  [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

如果果你尝试使用collect来选择任何特定值,例如n <= 3,那么它将对比每个元素并仅输出结果为true或false

[1,2,3,4,5,6,7,8,9,10].collect{ |e| e <= 3 }
# =>  [true, true, true, false, false, false, false, false, false, false]

四.Each
Each将使用块来判断每个数组,并返回原始数组而不是计算的数组。

1,2,3,4,5,6,7,8,9,10].each{ |e| print "#{e}!" e * 3 }
1!2!3!4!5!6!7!8!9!10! => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

如果你尝试使用每个选择任何特定值,例如e <= 3,那么它将判断每个元素但返回原始数组

五.Inject

获取累加器(sun)并将其更改为数组中的元素的次数。 返回累加器的最终值。 如果没有为accumlator明确指定初始值,则使用collection的第一个元素作为accumulator的初始值。

[1,2,3,4,5,6,7,8,9,10].inject{ |sum, e| sum += e }
# => 55
[1,2,3,4,5,6,7,8,9,10].inject(15){ |sum, e| sum += e }
# => 70

六.Detect

Detect等于select.first,就这么简单。 Detect使用块返回true的每个元素计算块,但仅返回第一个元素作为结果。

[1,2,3,4,5,6,7,8,9,10].detect{ |e| e > 5 }
# => 6

而且,detect将返回语句为true的第一个元素。

[1,2,3,4,5,6,7,8,9,10].detect{ |e| e * 3 }
# => 1
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2021年2月11日

氧化先生

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

取消回复
分类
  • JAVA 编程
  • 产品经理
  • 奇淫技巧
  • 文档规范
  • 生活妙招
  • 虚拟货币
  • 软件设计
标签聚合
奇淫技巧 Kubernetes Cloudflare 域名 软件设计师 freenom 狗狗币 软件设计
广告

COPYRIGHT © 2022 闪闪的部落格. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

黔ICP备16010320号

粤公网安备 44030602005860号