この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
ch_syntax [2020/07/11 04:55] klab [要素の追加・更新・削除] |
ch_syntax [2020/07/11 05:14] klab [プロパティの参照・書き換えと親子関係] |
||
---|---|---|---|
ライン 385: | ライン 385: | ||
</code> | </code> | ||
- | {{:pasted:20180103-210625.png}} | + | {{:pasted:20180103-210625.png?500}} |
ライン 402: | ライン 402: | ||
</code> | </code> | ||
- | {{:pasted:20180103-210642.png}} | + | {{:pasted:20180103-210642.png?400}} |
子のオブジェクトは親のオブジェクトが持っていたプロパティ(値やメソッド定義)をすべてそのまま引き継ぎ、親と同じように扱うことができる。この仕組みを利用して、タートル、ボタン、配列など、さまざまな標準オブジェクトをプロトタイプとして持つオブジェクトを必要なだけ作って利用できるわけである。 | 子のオブジェクトは親のオブジェクトが持っていたプロパティ(値やメソッド定義)をすべてそのまま引き継ぎ、親と同じように扱うことができる。この仕組みを利用して、タートル、ボタン、配列など、さまざまな標準オブジェクトをプロトタイプとして持つオブジェクトを必要なだけ作って利用できるわけである。 | ||
ライン 418: | ライン 418: | ||
</code> | </code> | ||
- | {{:pasted:20180103-210705.png}} | + | {{:pasted:20180103-210705.png?350}} |
ただし、上で説明したように、子のオブジェクトに同じ名前のプロパティが見つかった場合はそちらが使われるので、親の同名のプロパティは参照されなくなる。たとえば、次の場合はObjBのプロパティが参照されるので、「180」が表示される。 | ただし、上で説明したように、子のオブジェクトに同じ名前のプロパティが見つかった場合はそちらが使われるので、親の同名のプロパティは参照されなくなる。たとえば、次の場合はObjBのプロパティが参照されるので、「180」が表示される。 | ||
ライン 448: | ライン 448: | ||
### インスタンス変数 | ### インスタンス変数 | ||
- | **インスタンス変数**とは、個々のオブジェクトに付随する情報を保持するための変数のことをいう。ドリトルでは、インスタンス変数は個々のオブジェクトのプロパティに他ならない。ブロックがオブジェクトのプロパティとして格納されていて、メソッドとして呼び出された場合、そのブロックの中の変数で、「{\tt |…|}の中に書かれているパラメータやローカル変数以外のものは、インスタンス変数を意味している。たとえば次の例では、{\tt ObjB:x}が21増やされて221になり、それが表示される。 | + | **インスタンス変数**とは、個々のオブジェクトに付随する情報を保持するための変数のことをいう。ドリトルでは、インスタンス変数は個々のオブジェクトのプロパティに他ならない。ブロックがオブジェクトのプロパティとして格納されていて、メソッドとして呼び出された場合、そのブロックの中の変数で、「|…|」の中に書かれているパラメータやローカル変数以外のものは、インスタンス変数を意味している。たとえば次の例では、ObjB:xが21増やされて221になり、それが表示される。 |
<code> | <code> | ||
ObjB=ボタン!作る。 | ObjB=ボタン!作る。 | ||
ライン 484: | ライン 484: | ||
ここまでの説明をまとめると、あるブロックの中に現れる名前が何を表すかは、次のようにして決められている。 | ここまでの説明をまとめると、あるブロックの中に現れる名前が何を表すかは、次のようにして決められている。 | ||
- | - そのブロック冒頭の{\tt |…|}で定義されているものはローカル変数である。 | + | - そのブロック冒頭の |…| で定義されているものはローカル変数である。 |
- そのブロックが直接メソッドとして実行されているなら、それ以外の名前はすべてインスタンス変数である(ただし、参照時は親オブジェクトのプロパティを参照していることもある)。 | - そのブロックが直接メソッドとして実行されているなら、それ以外の名前はすべてインスタンス変数である(ただし、参照時は親オブジェクトのプロパティを参照していることもある)。 | ||
- そうでないなら、そのブロックを囲む外側において、同じ規則で名前の使われ方を探索するため1に戻る。 | - そうでないなら、そのブロックを囲む外側において、同じ規則で名前の使われ方を探索するため1に戻る。 | ||
ライン 590: | ライン 590: | ||
### コメント | ### コメント | ||
- | 「//」から行末までは**注釈**(**コメント**)と解釈され、プログラムの一部として扱われない。人が読むためのメモや、一時的にプログラムの一部を実行したくないときのコメントアウトなどに使うことができる。 | + | 「/ /」から行末までは**注釈**(**コメント**)と解釈され、プログラムの一部として扱われない。人が読むためのメモや、一時的にプログラムの一部を実行したくないときのコメントアウトなどに使うことができる。 |
たとえば、次の例で、1行目はプログラム全体の注釈、2行目はその処理の注釈、3行目は実行されないように一時的にプログラムの一部をコメントアウトしている。 | たとえば、次の例で、1行目はプログラム全体の注釈、2行目はその処理の注釈、3行目は実行されないように一時的にプログラムの一部をコメントアウトしている。 | ||
ライン 599: | ライン 599: | ||
// かめきち=タートル!作る。 | // かめきち=タートル!作る。 | ||
</code> | </code> | ||
+ | |||