生成器
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)
遅延評価を支援する機能として生成器があり、PharoやGNU Smalltalkで使用できる。生成器はCoroutineにも利用できる。生成器の使用は次の様に記述する。 stream := Generator on:[ :each |each yield: 1.each yield: 2. "stream nextを1回呼ぶまで実行しない。"each yield: 3. "stream nextを2回呼ぶまで実行しない。"].stream next. "-> 1"stream next. "-> 2"stream next. "-> 3" 生成器を使って処理を作ることは多くないが、配列などを使用する際、間接的に使用していることが多い。 | readStream grater2 total |readStream := #( 1 2 3 4 5 ) readStream. "#readStreamにより#select:を遅延実行する生成器が作られる。"grater2 := ( ( readStream select: [ :each | 1 < each ] ) collect: [ :each | each * 2 ] ) reject: [ :each | 8 > each ].total := grater2 inject: 0 into: [ :value :each | value + total ]. "#inject:into:でeachに代入するとき初めて#select:と#collect:と#reject:が実行される。"
※この「生成器」の解説は、「Smalltalk」の解説の一部です。
「生成器」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。
- 生成器のページへのリンク