サンプルコード
Option Explicit
Private b As Boolean
Private d As Double
Private re As Object
Private Sub Class_Initialize()
b = True
d = 0
Set re = CreateObject("VBScript.RegExp")
With re
.Pattern = "^(0|-?[1-9]{1}[0-9]*){1}(\.[0-9]*)?$" ' 検索パターンを設定
.IgnoreCase = False ' 大文字と小文字を区別する
.Global = True ' 文字列全体を検索
End With
End Sub
Private Sub Class_Terminate()
Set re = Nothing
End Sub
Public Function add(ByVal s As String) As MethodChaining
If Not Len(s) = 0 Then
If re.test(s) Then
d = d + CDbl(s)
Else
b = False
End If
Else
b = False
End If
Set add = Me
End Function
Public Function getAnswer() As String
Dim s As String
s = ""
If b Then
s = CStr(d)
End If
getAnswer = s
End Function
クラス名をMethodChainingとする。
使用例
Dim mc As MethodChaining
Set mc = New MethodChaining
MsgBox mc.add("1").add("2").add("3.0").add("0.5").getAnswer()
Set mc = Nothing
実行すると”6.5″とメッセージが表示される。
コメント