Visual Basic JavaScript 関数の中の関数



あるページのプログラムをVBに置き換えて利用したいのですが、
どう書き換えたらvbに実装できるかわかりません
このページのスクリプトです。
http://lagstyle.com/icm/icm.html

var getTotalProbability = function(player, rank) {
var ranking = [];
var ret = 0;
// 内部関数で再帰
var makeRanking = function() {
// 自分の順位なら、最後の順位に自分を入れて確率を計算
if(rank == ranking.length) {
ranking.push(player);
ret += getProbability(ranking);
ranking.pop(player);
return;
}
for(var i = 0; i < 10; i++) {
if(i == player) {
continue;
}
for(var j = 0; j < ranking.length; j++) {
if(ranking[j] == i) {
break;
}
}
if(j != ranking.length) {
continue;
}
// 他人を次の順位に入れて再帰する
ranking.push(i);
makeRanking();
ranking.pop(i);
}
};
makeRanking();
return ret;
};

JavaScriptの 関数の中の関数、 再帰などを
vbに置き換えて実装することは可能でしょうか?
またその方法を教えていただきたいです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/07/02 17:25:04

回答1件)

id:ku__ra__ge No.1

回答回数118ベストアンサー獲得回数40

VBというのはExcelVBAやVB6ということですよね?

JavaScriptの関数の中の関数は書き方によってはVBでは再現出来ない動作をしますが、これについては、JavaScriptでは関数内で定義されている関数も全部普通に関数定義する書き方でVBに書き換えれば問題ないと思います。
(あまり詳細には見ていませんが)

ただし変数については「関数の中の関数」からは「外側の関数で宣言された変数」も見えることを意識して、いくつかグローバル変数に変えてやる必要があります。

ちなみに再帰はVBでも問題なくできますので、特に注意する点は無いかと。

また、JavaScriptの配列にはpushやpopというスタック操作が行えるメソッドが用意されていますが、VBにはそれが無いのでスタック操作を自前で作る必要がありそうです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません