無限不可能性ドライブ

『ニューラルネットワーク自作入門』に刺激されてExcelVBAでニューラルネットワークを作ってみたものの、やっぱり数学やらなきゃと思い少しずつやってきたのもあって、自分の知識の整理とかそういった感じです。

【VBA】FizzBuzzをクラスを使って書いてみる【GAS】

最近GAS(Google Apps Script)の勉強を始めたので、
某所のお題であったFizzBuzz問題VBAとGASでクラスを使って(GASというかJavaScriptではクラスという言い方はしないらしい…)書いてみました。
VBAはコンストラクタ(Class_Initialize())で引数をとれないのががが。。
GASは this キーワードがちょっと煩わしい感じ。。
あと、いまひとつ中かっこ後のセミコロンの要不要がわかってません。

VBA

'[クラスモジュール - classFizzBuzz]
Option Explicit

Dim mMin As Long
Dim mMax As Long
Dim mNum As Long

Private Sub Class_Initialize()
    mMin = 1
    mMax = 100
    mNum = 1
End Sub

Public Sub Constructor(ByRef min As Long, ByRef max As Long)
    mMin = min
    mMax = max
    mNum = min
End Sub

Public Function hasNext() As Boolean
    mNum = mNum + 1
    hasNext = (mNum <= mMax)
End Function

Public Function getFizzBuzz() As String
    Dim res As String
    res = ""
    If mNum Mod 3 = 0 Then
        res = "Fizz"
    End If
    If mNum Mod 5 = 0 Then
        res = res & "Buzz"
    End If
    If res = "" Then
        res = CStr(mNum)
    End If
    getFizzBuzz = res
End Function
'[標準モジュール]
Option Explicit

Public Sub myFunction()
    Dim fizzBuzz As classFizzBuzz
    Set fizzBuzz = New classFizzBuzz
    Call fizzBuzz.Constructor(1, 100)
    
    Do
        Debug.Print fizzBuzz.getFizzBuzz
    Loop While fizzBuzz.hasNext
    
    Set fizzBuzz = Nothing
End Sub

【GAS】

var FizzBuzz = function(min, max) {
  this.min = min;
  this.max = max;
  this.num = min;
  
  this.hasNext = function() {
    this.num++;
    return (this.num <= max);
  };
  
  this.getFizzBuzz = function() {
    var res = '';
    if (this.num % 3 == 0) {
      res = 'Fizz';
    }
    if (this.num % 5 == 0) {
      res += 'Buzz';
    }
    if (res == '') {
      res = this.num;
    }
    return res;
  };
};

function myFunction() {
  var fizzBuzz = new FizzBuzz(1, 100);
  do {
    Logger.log(fizzBuzz.getFizzBuzz());
  } while (fizzBuzz.hasNext());
}