Yield の意味
C# で yield return に出会ったとき、まず最初に理解の妨げとなったのは yield という単語の意味だった。
当時の僕にとって、yield といえばそれは「降伏する」という意味だった。その理由は僕が工学部機械科出身で材料力学を習ってきたことと関係がある。材料力学には「降伏応力」という概念があって、これは英語で yield stress というのである。
そんなわけで、yield return を知ったときは大いに戸惑った。降伏する、ではサッパリ意味が通じないではないか。当然、辞書を引くことになる。
http://eow.alc.co.jp/yield/UTF-8/?ref=sa
- 〔農産物や鉱物が〕産出する
- 〔努力や投資によって〕収益が出る、利益が挙がる
- 〔戦いなどで相手に〕降伏する、屈服する
辞書を引いても、ストンと腑に落ちる訳は見つからない。強いて言えば「産出する」だろうか。yield return とは産出したものを return することだ、と考えられなくもない。しかしいくらなんでも、日本語の「産出する」という語感とどうしてもイメージが合わない。結局スッキリせぬまま「まあ yield とはそういうもんだ、プログラムが書ければそれでよし」と今まで過ごしてきた。
すると先日、会社の同僚が「yield の意味、英英辞書で調べてみたらスッキリですよ」などとのたまう。ほうほうなるほど、と思い調べてみたらこんな意味が見つかった。
http://www.ldoceonline.com/dictionary/yield_1
- to produce a result, answer, or piece of information:
直訳すれば「結果とか答えとか情報とかを生み出すこと」。なるほど、これぞまさに yield return にドンピシャの意味ではないか。やはり英単語の意味がスッキリと腑に落ちないときは英英辞書を引くことが大事なようだ。