浏览 4566 次
锁定老帖子 主题:提问关于yield的详细用法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-11
突然有点迷茫 def xxx puts "starement begin" yield yield puts"statement ending" end xxx {puts"now..."} produces: starement begin now... now... statement ending 如果只是插入一段代码的话 直接另外写一个函数即可 为什么还要这么用 是不是多此一举的? 迷惑中 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-11
yield是可以處理Block中的東西
像是你看到的Iterators事實上也是會用到yield 個人認為yield不好懂=_= 是我比較笨嗎? |
|
返回顶楼 | |
发表时间:2007-04-12
block的作用基本上就是个callback函数,没必要想的太多了。
和command pattern,c 的函数指针,c++ 的functor的目的基本一致。 当然细致说来和其他语言的类似概念有些区别(比如local variable的scope等),但简单理解成callback函数大致方向就对了。 |
|
返回顶楼 | |
发表时间:2007-04-12
def xxx puts "starement begin" yield yield puts"statement ending" end xxx {puts"now..."} 改成这样: def xxx &block puts "starement begin" block.call block.call puts"statement ending" end xxx {puts"now..."} 这样是不是清晰了点? |
|
返回顶楼 | |
发表时间:2007-04-12
block类似callback方式调用.
是ruby中实现内置迭代器基本方式 另外的好处还扩展了函数沿展性,没有必要每一个代码段调用都处理为一个函数. |
|
返回顶楼 | |
发表时间:2007-04-12
明白了 谢谢
|
|
返回顶楼 | |