xojoでの Array と ParamArray
Arrayとは同じ型の配列です。 例えば
'Var anArray() As Integer'
と宣言すれば、Integer型の配列の宣言です。
初期化には
'Var anArray() As Integer = Array( 1, 2, 3, 4, 5 )'
とします。
この配列の各要素に何か操作を施すには
''' xojo:
For Each theItem AsInteger In anArray
[各要素への操作を行う]
Next
'''
とするのが基本です。
ここで、String型の配列に入っている要素を連結する場合
''' xojo:
Var theStringList() As String = GetInitialString()
Var theResult As String = ""
For Each theItem As String In theStringList
theResult = theResult + theItem
Next
'''
とすると、theResultに連結した文字列が出来上がります。
これはFor-Each-Nextの使い方を示した例ですが、実際には
Stringクラスには連結のための機能があります。
''' xojo:
String.FromArrayメソッド
theResult = FromArray( theStringList , "" )
'''
2番目のパラメータを指定しないと、" "(半角スペース)が間に
使用されます。
ParamArray とはメソッド/関数に渡すパラメタとして、不定個数の
パラメタを渡す際に指定される物です。
''' xojo:A:
Function Concat( ParamArray inParam As String ) As String
Var theResultStr As String = ""
theResult Str = FromArray( inParam , "" )
Return( theResultStr )
End Function
'''
''' xojo:B:
Function Concat( inStrList() As String ) As String
Var theResultStr As String = ""
theResult Str = FromArray( inStrList , "" )
Return( theResultStr )
End Function
'''
上記のように、同じ実装で解決出来ます。
呼び出し側は
''' xojo:
Var theList() As String = Array( "だるま" , "さんが" , "ころんだ" )
MsgBox( Concat( theList ) )
MsgBox( Concat( "とうきょうの" , "きゃくは" , "よくにくくう", "きゃくだ" ) )
'''
は、各々どちらが呼び出されるでしょうか?
では、以下の宣言のメソッド本体を実装してみましょう。
'Function format( inFmtStr As String, ParamArray inParam As String ) As String'
そう、C言語のprintfに似た構文で使えるもので、様々な場面で利用できます。
制限:
inParamに渡されるのは文字列のみ、従って、inFmtStr内で使用出来るのも
%sの文字列指定のみです。