質問するログイン新規登録

質問編集履歴

1

修正しました

2018/04/04 01:12

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,24 @@
1
+ # 注釈
2
+ 1. KSwordOfHasteさんからの回答を拝見し、上手く初期の質問文が伝わっていない部分があったようなので質問文を一部修正、追記します。
3
+
4
+ 2. 他言語にもGeneratorがあるようなので、タグを追加させて頂きました。
5
+
6
+
7
+ # 質問
1
8
  generatorの使い道というのは非同期処理を同期的っぽく書く時以外には、どんな使い道がありますか?
2
9
 
3
10
  generatorの使い道をググるとたいてい出てくるのは非同期処理を同期的っぽく書くための手法が書かれた記事が大半な気がします。
4
11
 
5
12
  でも、async awaitの登場によって、その用途であればgenerator使わなくても良くなりました。
6
13
 
7
- generatorの特徴を考えると1つ目は関数と違って途中で処理を中断出来、また再開できるということ、2つ目は使う側が「くれ!」というと、その度iteratorと同じように提供できる値が尽きるまで「どうぞ!」と渡してくれるとうこと、最後に3つ目は、iteratorにはない特徴として、next()の引数に値をgenerator側に渡すこと、generatorとやりとりができるということかなと思います。
14
+ 以下僕なり認識しているgeneratorの特徴です。
8
15
 
16
+ 1. 関数と違って途中で処理を中断出来、また再開できる
17
+ 2. iteratorと同様に、generatorも使う側が「くれ!」というと、その度にgeneratorが提供できる値が尽きるまで「どうぞ!」と使う側に渡してくれる
18
+ 3. next()の引数に値をgeneratorを使う側からgenerator側のyieldに渡すことで、generatorとやりとりができる
9
- これを踏まえた上で何に使えるのかなと考えて見るのですが、やはり用途が思いつません。
19
+ 4. generatorgeneratorに処理を委譲でき
10
20
 
21
+ これらを踏まえた上で何に使えるのかなと考えては見るのですが、やはり用途が思いつきません。
22
+
11
23
  何か非同期処理以外の用途でgeneratorって使い道はありますか?
12
24
  こういう場面で使うと便利だよっていうようなケースがありましたら教えていただけると嬉しいです。