PB 電子会議室
カテゴリ:ユーザオブジェクト
日付:2001年02月07日 02:16 発信者:Taka
題名:RE(2):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは?
TKSさん、おはようございます。
>関数の引数に、値(VALUE)としてDW型を指定した場合に、関数内でDWを操作すると、
>オリジナルのDWも変更されるのですが、この場合は一体どのように解釈すれば
>良いのでしょうか?
>DWの場合はVALUEもREFERENCEも特に意識されないのでしょうか?
ご質問の意味がよくわからないのですが...
もしかして「標準データ型」と「オブジェクト型」を同じものとして捉えてます?
REF渡しの事にふれていることから推測すると、もしかしてそうなのかと思いました。
まず、「標準データ型」と「オブジェクト型」の違いを理解しなければなりません。
標準データ型は、メモリ上に確保された単なる変数です。
VALUE渡しの場合、関数の中で上書きしても呼び出し元には影響しません。
REF渡しの場合なら、関数の中で上書きすれば呼び出し元が変わります。
インスタンスを伴うオブジェクト型の場合、その参照を格納している変数は
実際には「ハンドル」と呼ばれるユニークな数値を保持しているだけです。
(dw_1などのコントロール名も、言い替えればウィンドウが持っているインスタンス変数です)
ある関数にdw_1を渡すということは、その関数の中でdw_1が示すハンドルに対して何らかの
操作を要求するんですよね?
この場合、VALUE渡しでも実際にはハンドルが渡るだけなので、dw_1に対する間接的な操作が
可能なのは当たり前でしょう。
むしろREF渡しにした場合、その関数の中で「別のインスタンスへの参照」を代入して返すことを
許してしまうわけで、きちんと理解していないと混乱のタネになりかねません。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.