词典对 yield 的解释有:屈服;出产,产生;放弃。 我怎么感觉这几个意思放在 yield 的用法上都说的通,最准确的解释是哪种?
1
guangwong 2018-04-13 11:05:00 +08:00 1
退位
|
2
InternetExplorer 2018-04-13 11:06:00 +08:00 1
甩出
|
3
zj299792458 2018-04-13 11:06:27 +08:00 via iPhone
投降
|
4
crossoverJie 2018-04-13 11:07:05 +08:00
求饶?
|
5
starmoon1994 2018-04-13 11:08:34 +08:00 3
算是一种避让吧
类似于开车的时候遇到了 120 急救车,需要先让急救车通过,你才能拿继续开 |
6
YenvY 2018-04-13 11:10:56 +08:00 via iPad
让出
|
7
LinusKou 2018-04-13 11:18:33 +08:00
最准确的当然是不翻啊,翻过来就没意思了。
|
8
est 2018-04-13 11:19:31 +08:00
叫唤。
|
9
leriou 2018-04-13 11:20:09 +08:00 1
出让
|
10
padeoe 2018-04-13 11:20:13 +08:00
难道不是 “生成 /生产” 吗?
|
11
wlwood 2018-04-13 11:20:36 +08:00
就是 yield. 中文意思还是 yield.
|
12
HanningWu 2018-04-13 11:22:04 +08:00
让行
|
13
crb912 2018-04-13 11:25:23 +08:00 via Android
看中文解释是不地道的。
if one thing yields to another, it is replaced by that thing。也就是:让位于,被…所替代。 所有协程的不同线程关系是同等的。屈服?就有点存在优先级的味道了。它不是子程序 |
14
wlwood 2018-04-13 11:28:24 +08:00
其实我觉得,要是讲解给别人,不一定要给他讲这个中文意思啥。
让他 yield 多几次,然后他就知道 yield 是啥了。😂😄 |
15
paulzhang1992 2018-04-13 11:30:51 +08:00
我之前是学土木的,yield strgenth 一般就指使物体形变无法复原的力,大概感觉一下,估计翻译成屈服?
|
16
wlwood 2018-04-13 11:34:11 +08:00
@paulzhang1992 翻译没问题。但是,但是,看看屈服跟协程,会有关系么?刚开始看 yield 会更加一脸懵逼吧😂😄
|
17
paulzhang1992 2018-04-13 11:37:36 +08:00
@wlwood 就是这种名词纯翻译的话应该有规范,理解的话结合实际意义更方便一些,提出 yield strength 就是觉得能有更直观的感受,cs 我也是自学刚刚入门😂
|
18
zhang1215 2018-04-13 11:37:56 +08:00
让步
|
19
vegito2002 2018-04-13 11:40:10 +08:00
认怂
|
20
mokeyjay 2018-04-13 11:41:46 +08:00
参考 PHP 官方中文文档的话,应该翻译为“生成”、“生成器”
|
21
xzpjerry731 2018-04-13 11:49:28 +08:00 1
生产呀。yield 还有产量的意思
|
22
neoblackcap 2018-04-13 11:51:46 +08:00 3
让渡或者易位,这里我觉得意译更重要,想想鲁棒性
|
23
chengxiao 2018-04-13 11:53:22 +08:00
走你
|
24
newtype0092 2018-04-13 11:55:01 +08:00 7
你行你上
|
25
nicevar 2018-04-13 11:55:56 +08:00
我丢
|
26
pathbox 2018-04-13 11:58:51 +08:00 via iPhone
不翻译
|
27
fogisland 2018-04-13 11:58:54 +08:00
@newtype0092 哈哈哈,很妙
|
28
zrq495 2018-04-13 12:03:04 +08:00 via iPhone
禅让🙃
|
29
xmadi 2018-04-13 12:08:53 +08:00 via iPhone
生成 yield 这语法是来自生成器的 如果从协程的角度没法翻译
|
30
ericls 2018-04-13 12:12:00 +08:00 via iPhone
|
31
binux 2018-04-13 12:12:48 +08:00
让道
在国外开车,看到 yield 就知道这个 yield 用得很形象了 |
32
catror 2018-04-13 12:13:09 +08:00
我休息下,你上吧
|
33
MeteorCat 2018-04-13 12:13:59 +08:00 via Android
让出+1
|
34
guyskk0x0 2018-04-13 12:48:27 +08:00 via Android
交棒
接力赛,把接力棒交给另一个协程 |
35
shihty5 2018-04-13 12:53:55 +08:00
礼让(给这个线程)
|
36
CYKun 2018-04-13 13:00:39 +08:00 via Android
看维基里关于生成器的解释:
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 翻译成中文的话,那也找一个比较合适的、与返回近义的词就行。如回归、交付之类的都可以。 |
37
northisland 2018-04-13 13:01:00 +08:00
虚报工作量
|
38
northisland 2018-04-13 13:02:06 +08:00
抱歉,忘了不在 python 节点。
|
39
vlike 2018-04-13 13:04:31 +08:00 via Android
挂起
|
40
xpresslink 2018-04-13 13:19:28 +08:00
@northisland 主流编程语言中很多都有这个关键字,如 C#,PHP,javascript 之类,java 也有 yeild 方法。
基本都是协程相关。 |
41
kaedea 2018-04-13 13:45:24 +08:00 via Android
认怂
|
42
CSM 2018-04-13 13:51:45 +08:00 via Android
产出
安道翻译的《流畅的 Python 》中如是翻译 yield 只要和 return 的翻译区别开就行啦 |
43
hheedat 2018-04-13 13:56:00 +08:00
景甜
|
44
luoway 2018-04-13 13:57:01 +08:00
看例句
yield the floor to sb 让插嘴 yield the right way to sb/sth 让行 |
45
JamesRuan 2018-04-13 14:16:04 +08:00
出让
|
46
xcatliu 2018-04-13 14:17:29 +08:00
丫得
|
47
Rufeer 2018-04-13 14:19:04 +08:00
刚好看到,《 Python 核心编程》里面是这样写的:
线程包括开始、执行顺序和结束三部分。它有一个指令指针,用于记录当前运行的上下 文。当其他线程运行时,它可以被抢占(中断)和临时挂起(也称为睡眠)——这种做法叫 做让步(yielding)。 |
48
geelaw 2018-04-13 14:23:11 +08:00 via iPhone
“让出”
This is the same “ yield ” as in that a thread (voluntarily) yields (the CPU). |
49
pigzilla 2018-04-13 14:24:39 +08:00 17
协程( coroutine )的协( co )是协作( cooperative )的意思,与之相对的是抢占式( preemptive )。
抢占式,就是轮到我执行了,现在执行的代码会被强制保存上下文然后暂停执行,换我执行。然而风水轮流转,我也会被这么抢占。抢占的过程通常是 OS 管理的,所以有可能抢占的时机并不是很合适因为 OS 不知道你每个线程现在在做啥合不合适暂停,但好在可以保证所有代码都能得到执行。 协作式,就是我执行过程中,到了一个阶段发现没事可做了(通常是等待 IO ),这时候 yield,主动把 CPU 资源让出来让别的代码去执行。同样的,别的代码也可能会在合适的时机主动暂停执行,让我再回来继续执行,如果我需要的其它资源已经到位( IO 数据已经有了)。协程的好处是这个让出的时机是开发时在代码里面明确写清楚了的( yield 关键字),所以让出的时机可以更合理。 yield 带来两个主要结果:1 )主动暂停代码的执行,让渡自己的资源占用; 2 )已经执行的代码可能产出一个中间成果。而事实上 yield 这个词在英文的本意就正好带有这两个含义。 因为谈到协程通常是和抢占式的多线程相比,也就是更注重第一个含义 /结果,所以 yield 在协程这个概念里面的最好翻译是“让出”。当然最好是不翻译,直接用 yield。 说 yield 类似于 return 的,只看到了 yield 的第二个结果,忽略了第一个。 |
50
paparika 2018-04-13 14:28:33 +08:00
让渡+1 说生产产出的不知道咋想的
|
51
yoloppp 2018-04-13 14:38:44 +08:00
甩锅
|
52
scriptB0y 2018-04-13 14:48:19 +08:00
呐喊
|
54
qiyuey 2018-04-13 15:49:09 +08:00
我想到了 [套接字]
|
55
zhwithsweet 2018-04-13 15:57:33 +08:00
不如叫 乐不思蜀 吧
|
56
weizhen199 2018-04-13 16:31:27 +08:00
回避,全部回避!
|
57
winglight2016 2018-04-13 16:34:49 +08:00
关键字还是不要翻的好,记得以前 UML 里 usecase 被翻译成用况,被人骂死~~~
|
58
heiher 2018-04-13 16:56:40 +08:00
滚蛋
|
59
kaedea 2018-04-13 17:23:56 +08:00 4
为了表现的友好一点:禅位
|
60
mengzhuo 2018-04-13 18:15:05 +08:00
@pigzilla #49 还可以补充一下,一些 Python 第三方库,例如 gevent,或者 Go 语言层面都消除了 yield,但背后仍然是协作式的调度。
|
61
wyntalgeer 2018-04-13 18:39:03 +08:00
备胎
|
62
patx 2018-04-13 19:15:41 +08:00
意译的话就是:生成迭代器。其他的什么生产、让渡,只会跟鲁棒性和套接字一样,搞得大家莫名其妙。
|
63
glasslion 2018-04-13 19:20:30 +08:00
第一感觉是 让渡
还是不翻译为好 |
64
neoblackcap 2018-04-13 19:56:40 +08:00
@mengzhuo golang 不是全部都是协作式的,也有抢占式调度在里面跟 Python 这些语言不一样
|
65
shiabo1121 2018-04-13 20:30:10 +08:00
挂起
|
66
to2false 2018-04-13 20:37:54 +08:00 via Android
让出
|
67
honeycomb 2018-04-13 21:13:54 +08:00 via Android
叫避让,它的一个用处是开车的时候,转弯让对面直行的动作,就叫 yield
|
68
CloudnuY 2018-04-13 22:19:38 +08:00
丫的
|
69
johnnie502 2018-04-14 00:28:46 +08:00
麻烦让一让
|
70
Qlccks2 2018-04-14 00:53:26 +08:00 via iPhone 3
另请高明
|
71
shutongxinq 2018-04-14 01:37:07 +08:00
@CSM 这个翻译可以和“常凯申”一拼高下。
|
72
SuperMild 2018-04-14 01:45:52 +08:00
上面很多人说“避让”之类的,可能不对,比如
a generator yields the values one at a time 这是产出或返回一个数值,无法说避让那个数值啊。 |
73
msg7086 2018-04-14 01:56:22 +08:00
甩锅
|
74
darluc 2018-04-14 02:29:24 +08:00
禅让咯?
|
75
wavingclear 2018-04-14 03:58:18 +08:00
让出这个词有误解歧义,虽然出字是代表生产出这个含义。return 也可以返回值,没人说叫返出?
|
76
wavingclear 2018-04-14 04:10:43 +08:00
让回,让停,让行。
让回的返回值这么表达有点别扭。让停是自己视角,让行是生活用语,停车让行。让行应该最好。 |
77
amai 2018-04-14 05:33:54 +08:00
抛出
|
78
qunwang6 2018-04-14 07:55:04 +08:00
让出+1
|
79
tomato3 2018-04-14 08:42:22 +08:00 via Android
产出
|
80
zealinux 2018-04-14 09:23:02 +08:00
让座
|
81
chesterzzy 2018-04-14 09:59:17 +08:00
走你
|
82
andrewzhou 2018-04-14 10:02:25 +08:00
蹦噔
|
83
maxco292 2018-04-14 10:14:40 +08:00 via Android
让权 ------ 让出执行权
|
84
bellchu 2018-04-14 10:20:59 +08:00
|
85
watzds 2018-04-14 10:52:35 +08:00 via Android
谦让,退位
|
87
Mutoo 2018-04-14 11:04:36 +08:00
yield: "诺"
|
88
wdhwg001 2018-04-14 11:10:46 +08:00 via iPhone
“让出”吧。
我曾想过“让回”会不会比“让出”好,因为“让回”与“返回”更工整,且“让回”后面接名词表示内容而不是目标,如“让回一个苹果”和“让出这个座位”。 但是… “返回”后面接名词是表示目标的,如“返回房间”。它本身也带来了理解的问题,如“返回函数 A ”是“以函数 A 返回”还是“返回到函数 A ”。 在这个方面,“让出”反而与“返回”有着惊人的相似度,我们同样可以像理解“返回 0.15 ”一样理解“让出 0.15 ”的含义,这文法不通,但已是惯例。 所以,“让出”比较好。 |
89
wl99 2018-04-14 11:19:46 +08:00
一位搞理论研究的老师和我们说的是 产出
|
90
yogogo 2018-04-14 11:24:10 +08:00
生成器
|
91
fansekey 2018-04-14 11:24:12 +08:00 via Android
让出
|
92
ech0x 2018-04-14 11:38:11 +08:00 via iPhone
我又想起 enable 被翻译成“使能”的例子了。这种关键字还是不要轻易翻译了吧,多用用就会了。
|
94
liuxu 2018-04-14 11:47:44 +08:00
上抛
|
95
lishali12345 2018-04-14 11:52:32 +08:00
@Mutoo 棒呆
|
96
mcfog 2018-04-14 11:57:05 +08:00
所以从最开始标题就误导的不行,凭啥 yield 就成了协程的一部分了……那 return 是 OO 的一部分咯(滑稽
|
97
miketeam 2018-04-14 12:31:53 +08:00 via iPhone
野滴
|
98
miketeam 2018-04-14 12:33:35 +08:00 via iPhone
读书读傻了都,字面意思不就很好吗
|
99
clino 2018-04-14 13:35:42 +08:00 via Android
抛出(结果)
|
100
jiangnanyanyu 2018-04-14 14:33:57 +08:00 via Android
我运行不下去了
|