锁定老帖子 主题:我的理解:yield是占位符
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-28
在Ruby语言中,yield是占位符:先在前面的某部分代码中用yield把位置占着,然后才在后面的某个代码块(block)里真正实现它,从而完成对号入座的过程. #定义find def find(dir) Dir.entries(dir).each {|f| yield f} #获得dir目录下的文件名列表;对每个文件名,用yield来处理(至于怎么处理,还不知道,占个位置先^_^) end #使用find find(".") do |f| #block开始 puts f #用输出文件名这个语句,真正实现了yield的处理(也可以用任何其他语句) end #block结束 由此可见,yield属于定义层,属于宣告层,也就是在心里说一句:"这个位置不错,我先用书本占了再说!";而block属于使用层,实现层,也就是最终你坐在了你先前占的位置上,从而真正的实现了对号入座的过程. 最后,请大家不要问我"万一书本被偷了怎么办?"之类的问题,谢谢合作。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-28
要这样说的话,听上去也是有道理的。
|
|
返回顶楼 | |
发表时间:2006-10-29
很形象..
|
|
返回顶楼 | |
发表时间:2006-10-29
引用 最后,请大家不要问我"万一书本被偷了怎么办?"之类的问题,谢谢合作。
Hmmmm, that was exactly I wanted to ask... |
|
返回顶楼 | |
发表时间:2006-10-30
写过一些东西给人骂过, 不把以前的yield理解在这分享了
但是 yield 叫成站位符, 只能是个人的理解,对一个语言中的词语的联想来帮助个人的记忆 中文的翻译者经常两种倾向: 第一学电脑的总是把自己的术语作为区分Geek与菜鸟的标志, 翻译中喜欢生硬的术语, 比如鲁棒 第二卖弄 术语概念 把简单的问题搞得深奥化, 玄乎化 |
|
返回顶楼 | |
发表时间:2006-10-30
"yield" in everyday life English means 让路。
If you drive, see sign "yield to the ramp", then you prepare to yield to all cars from the ramp. I think "yield" in Ruby means exact the same. The code yields to the block. Actually, it means the same in Java Thread code, the current thread yields to other threads. I don't know what is the best translation in Chinese, but it means the same to me in English. Straight literal translation "让路" might be easier for us to understand. Thanks! |
|
返回顶楼 | |
发表时间:2006-10-30
By the way, "yield" is a verb, not a noun.
|
|
返回顶楼 | |
发表时间:2006-10-30
http://www.railscn.com/about1130.html
以谦卑融让的心让宝石步入正轨 尽管满身洋气,自在地穿着西装在星巴克畅饮咖啡,但国人思路免不了受到社会心态的熏染。 yield令人困惑,尤其是长期在Java领域中熟悉了面向对象编程的牛人,加上面向过程中善于调度的高手。 在流程的控制中竟然是这样。yield并不是放弃,也不是产出,至少在金山词霸的解释中不能完美解读ruby代码的真正含义。 在国内开车的人不少,你能经常看到这样的标志吗? 在国内有这样的牌子,不过看到的不多,如果你开一圈,把能看到的用数码相机拍下来,数数 为什么在美国到处可见的yield标志,在中国变得稀少呢? 有这个立这个牌子的必要吗? 要受规矩,按着垄沟找豆包吗? 习惯太束缚创造性。 这都是在大街上和论坛,网站上经常看到和听到的。 yield怎么翻译我没有主意仅仅想说的要打破语言和思维的定势,谦虚和礼让是中国传统的美德,别给丢了 |
|
返回顶楼 | |
发表时间:2006-10-30
Wow, great article!!!!
Thanks bd7lx! I did not read it, since I did not know Ruby in June, I started to learn Ruby in late August... |
|
返回顶楼 | |
发表时间:2006-10-30
Now, I copied the same comments to your thread.
|
|
返回顶楼 | |