この間新人研修でVBを教えました。
簡単な関数を作って、それを利用するだけの単純なプログラムです。
ちなみにVB6.0です。
Sub Swap(a, b)
…
End Sub
Sub Main()
Swap(i,j) …●
End Sub
まぁ実際、読む必要も無いようなプログラムです。
が、これがエラー。何故?
あぁ、戻り値を取ってないからいけないのかな?
ということで●部にCallを追加。無事に動きました。
しかしその後色々試して見ると、●部の書き方次第で動作が変わってくることが分かりました。
× Swap (i,j)
○ Call Swap (i,j)
○ Swap i,j
× Call Swap i,j
具体的にはこの様になりました。
カッコをつける、つけないで扱いが変わってくるようです。
…って、え、なにこれ?バグ?
というわけで仕様だったわけですが、なにこういうのってVBじゃ常識なの?あぁん?
何カッコのあるなしで振る舞い変えてんですか?
わー、VBはとってもじゅうなんで、たのんでもいないことをきちんとやってくれてすごいよね!
とか思いました。