ruby中的block和迭代器

10.Block代码块
   书中是这样介绍Block的:
   (1)先来看看Block的写法:只是{}或者do...end之间的一组代码块
   {puts "Hello"}
   do
    club.enroll(person)
    person.socialize
   end
   为什么会有这两钟写法呢:{}比do...end更紧密些
   但是ruby程序员正在尝试ruby约定俗成的标准:
   单行block用{}          多行用do...end
   (2)下面写一个方法
   ==================start==================
   def call_block
        puts "Start of method"
        yield
        yield
        puts "End of method"
    end
    call_block { puts "In the block"}
    ==================end==================
    {puts "In the block"} 是一段block
    Ruby使用yield语句执行block语句,这里调用两次
    可以提供参数给yield("hello",77)
    def call_block_2
     yield("hello",77)
    end
    call_block_2 {|str,num| puts str,num}
    (3)block的作用,用在迭代器中
    还记得循环中each的用法吗
    a = %w{ant bee cat dog elk}
    a.each{|lang|
        puts lang
    }
    我们来解释一下,相当于在def each中调用了多次的yield("ant")
    
    许多内建在c和java等语言的循环结构在ruby中只是方法的调用,
    这些方法会零次或多次的调用相关联的block
    下面给些例子,你就会明白了
    ["cat","dog","horse"].each{|name| print name," "}
    5.times{print "*"}
    3.upto(6){|i| print i}
    ('a'..'e').each{|char|print char}
    这些写法太通俗了,神奇吧。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值