|
間に合いませんでした。
コメントはしますが、返事を求めるものではありません。
>そうでは無くメインルーチンが渡しを決めてサブルーチンを呼ぶことができることを知った
それは事実ではありません。
既に何度も説明がありましたが、
引数に余計なカッコをつけることで、
元の変数とは別の領域にクローンが作成され、
その参照が渡されているだけで、
元の引数の値が変化していないために、ByBalのように見えているだけです。
依然としてByRefであることに変わりはありません。
一方、ByValで定義されているプロシージャを、
呼び出し側でByRefと変更することもできません。
メインルーチン側で渡し方法を決めるなどということはできません。
>サブのほうで渡しを決めるのが基本的
"基本的"ではありません。
例外なく、プロシージャにおける定義に従っています。
呼出元が主導権を握ることができる、ないしコントロールができる、
という認識をお持ちのようですが、それでは、
ByValで定義されているプロシージャを、
ByRefとして機能するメイン側の呼び出し方があるのか、
考えてごらんになると良いでしょう。
---------------------
賄賂云々の譬えを申し上げたが、適切さを欠きました。
というのは、渡す側、受ける側に独立の人格があるような譬えだったからです。
メインプロシージャ、subプロシージャ、functionプロシージャ側に
独立の人格?など無く、各プロシージャーを厳格に定義し、それらを認識した上で、
プロシージャに実行の一部を委ねるのは、同一の主体でしかありません。
各プロシージャの定義を承知したうえで使っているのです。
あたかもそれぞれに意志があるかのような擬人化したモデルで、
コードの理解を図ろうとすると無理が生ずるのではないでしょうか。
|
|