ruby中的block和迭代器
来源:互联网 发布:抢购软件源代码 编辑:程序博客网 时间:2024/05/19 19:41
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}
这些写法太通俗了,神奇吧。。。。。。。
书中是这样介绍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}
这些写法太通俗了,神奇吧。。。。。。。
- ruby中的block和迭代器
- Ruby | Block和迭代器
- Ruby 中的 block、proc、lambda
- ruby 中的Block,lambda,Proc
- ruby中的 Proc、block说明
- Ruby 中的 block、proc、lambda
- Ruby Block
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- Ruby,Block,CPS 和 call/cc
- 保存错误日志
- android数据存储之SharedPreferences方式
- 你所参与的开发项目是死亡之旅(Death March)么?
- ApiDemo学习之AlphaBitmap
- 冲动的惩罚
- ruby中的block和迭代器
- redis 手册
- GetFileAttributes与相对路径
- Java 7新功能介绍及与Java1.7性能测试比较
- 查看 linux tomcat进程 kill tomcat
- linux C++教学视频
- 黑马程序员--java中的反射。
- 如何解决ACCESS中SELECT TOP语句竟然返回多条记录的问题?
- Hello Android - proguard混淆器使用