文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

灵活编码手段Ruby blocks如何理解

2023-06-17 18:16

关注

今天给大家介绍一下灵活编码手段Ruby blocks如何理解。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。

Ruby语言的出现,改变了程序员传统的编写诶代码方式,使编程人员在编写代码时会有一种非常愉悦的心情。在这里我们为大家介绍一种灵活编码手段Ruby blocks。

先来看一下这段代码:

  1. class SongList  

  2. def [](key)  

  3. return @songs[key] if 
    key.kind_of?(Integer)  

  4. return @songs.find { 
    |aSong| aSong.name == key }  

  5. end  

  6. end 

在第四行中,有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的方式过滤集合

  1. LINQ Query:  

  2. string[] names = { "Geoff", 
    "Jessica", "Mike", "Megan",  

  3. "Priscilla", "Jack", "Alma" };  

  4. IEnumerable<string> expr = 
    from s in names  

  5. where s.Length == 5  

  6. orderby s  

  7. select s.ToUpper();  

  8. foreach (string item in expr)  

  9. Console.WriteLine(item); 

上面的用法是不是很简洁方便?用ruby来实现的话,将会是这样:

  1. names = [ "Geoff", "Jessica", 
    "Mike", "Megan", "Priscilla",  

  2. "Jack", "Alma" ]   

  3. expr = names.select {  

  4. |n| n.length == 5  

  5. }.sort.collect { |n| n.upcase }  

  6. expr.each {|n| puts n } 

正因为Ruby blocks如此方便,在阅读ruby程序的时候,可以看到被广泛的使用着。

以上就是灵活编码手段Ruby blocks如何理解的全部内容了,更多与灵活编码手段Ruby blocks如何理解相关的内容可以搜索编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯