ruby 的代码块和yield

本文详细介绍了Ruby语言中yield语句的使用方法及其工作原理。通过具体示例展示了如何利用yield来实现代码块的调用,并解释了代码块与yield之间的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


=begin
yield的意思其实很简单,就是暂停代码的运行,将yield后面的参数传递给block,block根据传递来的参数运行
当block返回值得时候,值就是yield的返回值,yield返回后继续运行.

代码块(Blocks)是指一块代码,用大括号({})或者do…end来标明起始和结束,代码块只能跟在方法调用后边。
yield语句:在方法内部使用yield语句来占位,当方法执行到yield时,实际执行的是调用方法时跟在后边的的代码块。

|x|:变量用一对’|'包裹,在代码块中使用,用于接受yield传递的参数。yield后跟的参数会传递给代码块中用| |标志的变量。
=end
def m
    count=1
    while count<10
        count+=1
        if count%3==0
            yield count
        end
    end
end
def meth
    m {|count| yield count}
end

 # Call Methods
meth {|count| puts count}


#占位符,准确的说是可以带家伙的占位符,那么这个带的家伙自然是后续调用代码中的所需要的东西了,
#实例二  定义find 
def find(dir) 
 #获得dir目录下的文件名列表;对每个文件名,用yield来处理(至于怎么处理,还不知道,占个位置先^_^)
  Dir.entries(dir).each {|f| yield f} 
end 
 
#使用find 
find(".") do |f| #block开始 
  puts f  #用输出文件名这个语句,真正实现了yield的处理(也可以用任何其他语句) 
end #block结束 

输出的结果:

3
6
9
.
..
.project
test_1.rb
yield.rb

参考的文章:

http://flyingsnail.blog.51cto.com/5341669/1088018

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值