`
小小龙猫
  • 浏览: 98365 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

读《programming ruby》笔记 四 Blocks Iterators

阅读更多
这两个月比较忙,没有时间更新BLOG,今天开始继续。
ruby 中的block 和iterator 为我们在迭代编程中提供了更简单和自然的方法,block 跟随在方法调用后面,以{}包含代码部分。方法内部用yield调用block中的代码内容,block 的作用简单的说就是影响方法体内的代码行为,类似的功能比如在C#里的delegate,c/c++里的方法指针。
def three_times
  i=1
  while i<4
    yield i
    i +=1;
  end  
  
end

three_times{ |i| puts i}

#output
#1
#2
#3


有了block,在数组的循环应用中就可以写出十分简洁的语句

打印数组元素中的第一个字符,这里用到了数组的each方法。
%w{hello world ruby}.each { |str| puts str[0,1] }
#output
#h
#w
#r


计算int数组的和,这里用到了inject方法,sum是用来得到执行的值,等价于sum = sum+item,
最后返回sum。
puts [1,3,5,7,9].inject{ |sum,item| sum+item }
#output
#25



下面再看看一个Block的实际应用
在Rails中layout是做为模板页使用的,可有的时候我们需要在不同的页面调用不同的JS,又不想全部写在模板页里面,这个时候可以使用block来灵活调用.

在ApplicationHelper module里定义pagejs方法
def pagejs(*jsname)
    jsname.each{|item| content_for("pagejs"){ javascript_include_tag(item) }}
end


然后在layout/index.rhtml 里加入
<%= yield :pagejs %>


最后在要使用的view页面的第一行调用
<%pagejs("user")%>



呈现出的html源码中就会出现
<script src="/javascripts/user.js?1207145282" type="text/javascript"></script>
4
1
分享到:
评论

相关推荐

    Programming ruby.pdf

    《Programming Ruby》是一本关于Ruby编程语言的经典著作,由Dave Thomas、Andy Hunt和Chad Fowler合著。这本书自2004年初版以来,一直是学习Ruby的首选资源,被誉为“Pickaxe”书,因其封面的图标而得名。Ruby是一种...

    Programming Ruby 2nd.pdf

    本书是《Programming Ruby, The Pragmatic Programmers' Guide》的第二版,为读者提供了一个深入了解Ruby编程语言的机会。 根据描述,“Programming Ruby”被赞誉为一本既聪明又有趣的书,它不仅教授了Ruby语言本身...

    ruby笔记1ruby笔记1ruby笔记1

    标题中的"ruby笔记1ruby笔记1ruby笔记1"暗示了这是一份关于Ruby编程语言的学习笔记,可能包含了作者在学习过程中的重点、难点以及心得体验。描述中的内容重复了标题,进一步强调了这是关于Ruby的深入学习记录。标签...

    SIMATIC PCS 7 Programming Instructions for Blocks manual.pdf

    SIMATIC PCS 7 Programming Instructions for Blocks manualpdf,SIMATIC PCS 7 Programming Instructions for Blocks manual

    Programming Ruby

    - **第4章:Containers, Blocks, and Iterators**:讲解容器数据结构、块(block)以及迭代器(iterator)等高级特性。 - **第5章:Standard Types**:介绍Ruby标准类型,如整型、浮点型、字符串等。 - **第6章:More...

    ruby笔记2ruby笔记2ruby笔记2

    "ruby笔记2ruby笔记2ruby笔记2"可能是指一系列关于Ruby学习的笔记,这些笔记可能涵盖了Ruby的基础概念、核心特性以及进阶话题。在Ruby的学习过程中,理解和掌握以下几个关键知识点至关重要: 1. **面向对象编程...

    The Ruby Programming Language 介绍

    在《The Ruby Programming Language》这本书中,作者深入浅出地介绍了Ruby的各个方面,从基础语法到高级特性的应用,是学习和理解Ruby的宝贵资源。书中涵盖了类和对象、模块、方法、变量、控制结构、异常处理、正则...

    Pro TBB C++ Parallel Programming with Threading Building Blocks

    书名《Pro TBB C++ Parallel Programming with Threading Building Blocks》指出了本书的主要内容是使用Threading Building Blocks (TBB) 进行C++并行编程。Threading Building Blocks 是一个由Intel开发的C++模板库...

    《Ruby Programming—向Ruby之父学程序设计(第2版)》电子书

    同时,书中也会介绍Ruby的块(blocks)、Proc对象和Lambda,这些都是Ruby中处理代码块的独特方式。 在函数式编程方面,Ruby也提供了一些支持,如闭包和高阶函数。这些特性可以帮助程序员写出更简洁、更可读的代码。...

    Blocks Programming Topics

    ### Blocks Programming Topics #### Introduction Blocks是C语言层面的一个语法和运行时特性,它们类似于标准C函数,但除了可执行代码之外,还可以包含对自动(栈)或管理(堆)内存中的变量绑定。这意味着一个块...

    学习 Ruby 的笔记以及 Demo.zip

    本资源“学习 Ruby 的笔记以及 Demo.zip”显然包含了关于Ruby编程的学习资料和一些实际示例代码,旨在帮助初学者理解并掌握Ruby的基础及进阶特性。 首先,让我们深入了解一下Ruby的核心特性: 1. 面向对象:Ruby是...

    Blocks编程要点[中文完整翻译版]- Blocks Programming Topics

    #### 第四章 Blocks和变量 **4.1 变量类型** Block可以捕获多种类型的变量,包括基本类型、指针类型、结构体等。 **4.2 __BLOCK存储类型** 为了能够在Block内部修改外部作用域内的变量,需要使用`__block`关键字...

    Programming LEGO EV3 My Blocks Teaching Concepts and Preparing for FLL epub

    Programming LEGO EV3 My Blocks Teaching Concepts and Preparing for FLL Competition 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    ruby中文手册 chm

    通过这个中文手册,开发者不仅可以学习到Ruby的基本语法,还可以了解到更高级的主题,如元编程、闭包、 Blocks、Proc对象和Symbol,以及如何利用Ruby的灵活性来创建高效、简洁的代码。同时,了解RGSS可以让开发者...

    ruby初学笔记ruby初学笔记

    1. **面向对象编程(Object-Oriented Programming, OOP)**:Ruby是完全的面向对象语言,每个值都是一个对象,包括基本类型如整数、字符串和布尔值。类是创建对象的蓝图,实例化一个类就能创建一个新的对象。理解类...

    Beginning.Ruby.From.Novice.to.Professional.3rd.Edition.1484212797

    Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...

Global site tag (gtag.js) - Google Analytics