论坛首页 编程语言技术论坛

我的理解:yield是占位符

浏览 24401 次
该帖已经被评为精华帖
作者 正文
   发表时间: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属于使用层,实现层,也就是最终你坐在了你先前占的位置上,从而真正的实现了对号入座的过程.
最后,请大家不要问我"万一书本被偷了怎么办?"之类的问题,谢谢合作。
   发表时间:2006-10-28  
要这样说的话,听上去也是有道理的。
0 请登录后投票
   发表时间:2006-10-29  
很形象..
0 请登录后投票
   发表时间:2006-10-29  
引用
最后,请大家不要问我"万一书本被偷了怎么办?"之类的问题,谢谢合作。


Hmmmm, that was exactly I wanted to ask...
0 请登录后投票
   发表时间:2006-10-30  
写过一些东西给人骂过, 不把以前的yield理解在这分享了

但是 yield
叫成站位符, 只能是个人的理解,对一个语言中的词语的联想来帮助个人的记忆

中文的翻译者经常两种倾向:

第一学电脑的总是把自己的术语作为区分Geek与菜鸟的标志, 翻译中喜欢生硬的术语, 比如鲁棒

第二卖弄 术语概念 把简单的问题搞得深奥化, 玄乎化



0 请登录后投票
   发表时间: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!

0 请登录后投票
   发表时间:2006-10-30  
By the way, "yield" is a verb, not a noun.
0 请登录后投票
   发表时间:2006-10-30  
http://www.railscn.com/about1130.html

以谦卑融让的心让宝石步入正轨

尽管满身洋气,自在地穿着西装在星巴克畅饮咖啡,但国人思路免不了受到社会心态的熏染。

yield令人困惑,尤其是长期在Java领域中熟悉了面向对象编程的牛人,加上面向过程中善于调度的高手。

在流程的控制中竟然是这样。yield并不是放弃,也不是产出,至少在金山词霸的解释中不能完美解读ruby代码的真正含义。



在国内开车的人不少,你能经常看到这样的标志吗?

在国内有这样的牌子,不过看到的不多,如果你开一圈,把能看到的用数码相机拍下来,数数



为什么在美国到处可见的yield标志,在中国变得稀少呢?

有这个立这个牌子的必要吗?

要受规矩,按着垄沟找豆包吗? 习惯太束缚创造性。

这都是在大街上和论坛,网站上经常看到和听到的。

yield怎么翻译我没有主意仅仅想说的要打破语言和思维的定势,谦虚和礼让是中国传统的美德,别给丢了

0 请登录后投票
   发表时间: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... 
0 请登录后投票
   发表时间:2006-10-30  
Now, I copied the same comments to your thread.
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics