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

回答編集履歴

2

refinement

2018/09/13 03:10

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -2,15 +2,17 @@
2
2
 
3
3
  プログラムを実行する過程において、そのプログラム自身(≒元のソースコード)の構造を参照できる機能です。
4
4
 
5
+ 特にコンパイル型プログラミング言語の場合、コンパイル時とプログラム実行時を区別して、静的リフレクション(static reflection)、動的リフレクション(dynamic reflection)と呼ばれます。
6
+
5
7
  > 同様にC#ですと、メタ情報があって、例えばテキストデータからクラスのインスタンスを生成するという事が出来るらしいですが、この際にメタ情報を読んでくる、
6
8
  > このメタ情報を参照する事がリフレクションという事でしょうか?
7
9
 
8
- その理解で問題ないと思います。C#言語は、リフレクションをサポートしています。
10
+ その理解で問題ないと思います。C#言語は、リフレクションをサポートしています。挙げられている "テキスト情報からのクラスインスタンス作成" は、動的リフレクションによって実現されます。
9
11
 
10
12
 
11
13
  > C++にはRTTIがあって、プログラムの実行中にこのRTTIから取得した情報を使って何かの処理をするという。
12
14
  >(ちなみに、RTTIはメタ情報という事で合っているのか合っていないのかご指摘いただきたいです。)
13
15
 
14
- C++言語のRTTI(RunTime Type Identification)は型の「名前」を読み取れるだけです(※)。非常に限定されたリフレクションとも解釈できますが、一般にはC++はリフレクションをサポートしない言語と言われます。
16
+ C++言語のRTTI(RunTime Type Identification)は型の「名前」を読み取れるだけです(※)。非常に限定された動的リフレクションとも解釈できますが、一般にはC++はリフレクションをサポートしない言語と言われます。
15
17
 
16
18
  ※: 厳密にはRTTIで読み取れる型名も単なるヒント情報にすぎず、実用上は「型情報の比較」ができるだけです。

1

refinement

2018/09/13 03:10

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > リフレクションとは何ですか?
2
2
 
3
- プログラム実行に、そのプログラム自身(≒元のソースコード)の構造を参照できる機能です。
3
+ プログラム実行する過程おいて、そのプログラム自身(≒元のソースコード)の構造を参照できる機能です。
4
4
 
5
5
  > 同様にC#ですと、メタ情報があって、例えばテキストデータからクラスのインスタンスを生成するという事が出来るらしいですが、この際にメタ情報を読んでくる、
6
6
  > このメタ情報を参照する事がリフレクションという事でしょうか?