Ruby语言的出现,改变了程序员传统的编写诶代码方式,使编程人员在编写代码时会有一种非常愉悦的心情。在这里我们为大家介绍一种灵活编码手段Ruby blocks。#t#
创新互联公司主营鸡冠网站建设的网络公司,主营网站建设方案,成都APP应用开发,鸡冠h5小程序定制开发搭建,鸡冠网站营销推广欢迎鸡冠等地区企业咨询
先来看一下这段代码:
在第四行中,有find这样一个方法,可以按照指定条件对songs进行遍历,最终返回一个符合条件的个体。
下面就来看看这个方法到底是怎么实现的。
- class Array
- def find
- for i in 0size
- value = self[i]
- return value if yield(value)
- end
- return nil
- end
- end
发现是在Array这个类中,增加了一个method,在method中嵌入了一个遍历操作。如果只是这样的话,那么ruby和其他语言也就没有什么差别了,我们注意到第5行中有yield,这么一个东东。其实他起到了一个代理的作用,实现了实际操作部分和遍历的分离。
再看看下面这个例子,来了解一下yield的功能。
- 1def threeTimes
- yield
- yield
- yield
- end
- threeTimes { puts "Hello" }
这里定义了名叫threeTimes的blocks, Ruby blocks中会重复3次外部的操作,当row 6的代码执行后,会得到后面的结果:
Hello
Hello
Hello
可以看到blocks为我们提供了如此灵活的手段,其实他语言中需要通过代理或接口或函数指针来实现。
其实.net 3.x以后的版本也提供了类似的功能,一个叫LINQ(Language Integrated Query )的东东。
可以使用类似SQL的方式过滤集合
- LINQ Query:
- string[] names = { "Geoff",
"Jessica", "Mike", "Megan",- "Priscilla", "Jack", "Alma" };
- IEnumerable
expr =
from s in names- where s.Length == 5
- orderby s
- select s.ToUpper();
- foreach (string item in expr)
- Console.WriteLine(item);
上面的用法是不是很简洁方便?用ruby来实现的话,将会是这样:
- names = [ "Geoff", "Jessica",
"Mike", "Megan", "Priscilla",- "Jack", "Alma" ]
- expr = names.select {
- |n| n.length == 5
- }.sort.collect { |n| n.upcase }
- expr.each {|n| puts n }
正因为Ruby blocks如此方便,在阅读ruby程序的时候,可以看到被广泛的使用着。
当前文章:Rubyblocks提供灵活编码手段
文章分享:http://www.mswzjz.cn/qtweb/news21/230721.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能