协程概念里的 yield,翻译成中文,最合适的解释是什么?

2018-04-13 11:01:47 +08:00
 zlel

词典对 yield 的解释有:屈服;出产,产生;放弃。 我怎么感觉这几个意思放在 yield 的用法上都说的通,最准确的解释是哪种?

13806 次点击
所在节点    Python
102 条回复
xzpjerry731
2018-04-13 11:49:28 +08:00
生产呀。yield 还有产量的意思
neoblackcap
2018-04-13 11:51:46 +08:00
让渡或者易位,这里我觉得意译更重要,想想鲁棒性
chengxiao
2018-04-13 11:53:22 +08:00
走你
newtype0092
2018-04-13 11:55:01 +08:00
你行你上
nicevar
2018-04-13 11:55:56 +08:00
我丢
pathbox
2018-04-13 11:58:51 +08:00
不翻译
fogisland
2018-04-13 11:58:54 +08:00
@newtype0092 哈哈哈,很妙
zrq495
2018-04-13 12:03:04 +08:00
禅让🙃
xmadi
2018-04-13 12:08:53 +08:00
生成 yield 这语法是来自生成器的 如果从协程的角度没法翻译
ericls
2018-04-13 12:12:00 +08:00
@paulzhang1992 哈哈 我也是学土木的

Yield 这里有两个意思 交出控制权 和产出一个值 两个意思都用上了 很妙啊
binux
2018-04-13 12:12:48 +08:00
让道
在国外开车,看到 yield 就知道这个 yield 用得很形象了
catror
2018-04-13 12:13:09 +08:00
我休息下,你上吧
MeteorCat
2018-04-13 12:13:59 +08:00
让出+1
guyskk0x0
2018-04-13 12:48:27 +08:00
交棒
接力赛,把接力棒交给另一个协程
shihty5
2018-04-13 12:53:55 +08:00
礼让(给这个线程)
CYKun
2018-04-13 13:00:39 +08:00
看维基里关于生成器的解释:

A generator is very similar to a function that returns an array, in that a generator has parameters, can be called, and generates a sequence of values. However, instead of building an array containing all the values and returning them all at once, a generator yields the values one at a time, which requires less memory and allows the caller to get started processing the first few values immediately.

生成器类似于一个返回值为数组的函数;不同于普通函数直接构造并返回( return )整个数组的做法,生成器每次返回( yield )其中的一个值。

从行文里对 yield 的用法来看,yield 其实就是返回的意思。从逻辑上看,yield 跟 return 的行为也是类似的,都是结束当前函数执行,回到调用处并提供一个返回值。

所以 yield 的含义没有大家想的那么深奥,其实就是在 return 这个关键字被占用了的情况下,找了一个合适的近义词来表示生成器里这种特殊的“返回”而已。

相应的,如果我们要把 yield 翻译成中文的话,那也找一个比较合适的、与返回近义的词就行。如回归、交付之类的都可以。
northisland
2018-04-13 13:01:00 +08:00
虚报工作量
northisland
2018-04-13 13:02:06 +08:00
抱歉,忘了不在 python 节点。
vlike
2018-04-13 13:04:31 +08:00
挂起
xpresslink
2018-04-13 13:19:28 +08:00
@northisland 主流编程语言中很多都有这个关键字,如 C#,PHP,javascript 之类,java 也有 yeild 方法。
基本都是协程相关。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446475

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX