|
こんにちは。
横合いから失礼します。
既に適切な指摘がございましたが、念のため追記します。
プロシージャを定義した段階で、参照渡し、値渡しのどちらにするかは
決める仕組みになっています。指定を書略したらByRefです。
呼び出す際に、それを承知して使うわけです。
貴兄の指摘のように、
> つまり(〜渡し)は呼出元ではなく呼出先プロシージャの主導権によって
> 決定されると言っていいのではないでしょうか。
どちらが主導権を持っているかというようなことではないと思います。
>つまり、ByRef、ByVarを書くべきところは呼出元であると思います。
VBAは、そういう設計の言語ではありません。(該当する言語例を知りません)
型の指定や、引数の引き渡しなどすべて、
呼び出されるプロシージャ側で一意的に定義するのが決まりです。
・呼び出す側で動的に変更することもできませんし、
・受ける側が、呼び出す側の指定に応じて、どんな呼び出し方にも対応できるとか、
そういう仕組みにはなっておりません。
プロシージャは複数箇所で何度でも呼び出すことが想定されますから、
呼び出す側で逐一指定しなければならないとしたら、
少なくとも、相当に記述効率が悪くなるでしょう。
いずれにしても、あなたがこれから言語を設計でもしようとしているなら、
そうした議論が有益かもしれませんが、
既にある言語のことを議論しているのでしょうから、
まずは、その言語のきまりを正確に理解することが大切だと思います。
もし言語設計をこう変えるべきだという議論をしたいのなら、
こうした場所は適切ではありません。(適切な場所も知りませんが)
------------------------
呼称の件にもふれましょう。
下世話な譬え話で恐縮ですが、
賄賂を渡す、受取るといった行為が世間には見られますね。
賄賂というものは、その効果、期待に関して、
両者にほぼ共通した認識があると言ってよいでしょう。
受け取る側がその性格を決めているわけでもなく、
渡す方もその効果を信じているからこそ、阿吽の呼吸で渡すのです。
そうした行為に対して、
賄賂を「受け取る」と呼ぶべきで、賄賂を「渡す」と呼ぶべきではない、
と主張されているようなもので、余り生産的な話でもなかろうと思います。
(いやあ、極端なたとえ話だったかも)
---------
ちなみに、別掲示板の件、拝見していた私も、βさんと同じ印象を持ちました。
ローカル変数というタイトルの別掲示板のご発言で、捨て台詞的に、
あなた方は間違っている? 私ならこう書く、と主張された件です。
もともと、適用するスコープを「広くする」にはどうするか、
というのが元記事なんですよ。
プロシージャレベル変数の説明が仮に不足してとしても、
それが致命的だとも思いません。
そこに重点があるわけではないからです。
プロシージャレベルの話はあくまで前段なのです。
にもかかわらず、あなたは、スコープを一番狭くしたときについての説明記述は、
こうあらねばならない、おかしい、と主張されたわけです。
主張された内容自体を単独で拝見すれば、誤字を除き概ねよいと思いますが、
記事を記載した側の気持ちを忖度すれば、
それはテーマが違うといったところかもしれません。
いずれにせよ、鬼の首でも取ったように主張することでもないと思います。
|
|