当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2009年5月23日土曜日

リスト変数と配列の違い

リストと配列の違いって分かりますか?
どちらも、一つの変数の中に複数の値を持つことができる。
という意味では同じものだと思いますが、実際はどうなんでしょう?

式言語(@関数)では、配列はなく、すべてリストとして処理をするようです。
しかし、LotusScript言語では、全く別のものとして扱われています。

デザイナヘルプを読んで、違いを簡単にまとめてみました。
詳しくはデザイナヘルプを読んでください。
それぞれの特性を活かして、よりよいプログラムを作成するようにしましょう。
【リスト】
 1次元の要素しか持たない
 要素数は動的に変化する
 ユーザ定義のデータ型内(Type内)では宣言できない
 リスト内の要素リストタグというものを利用してアクセスする
 リストタグは、リスト内の要素を表す一意の文字列である(数値でも良い)
【配列】
 複数次元の要素を持てる(最大で8次元まで可能)
 固定配列と動的配列の2種類があるが、利用前に要素数を決める必要がある
 ユーザ定義のデータ型内(Type内)では宣言できる
 配列内の要素は、「変数名(index)」のようにアクセスする
 indexは配列内の要素の順番を指す


サンプルは、リスト変数と配列を定義して、それぞれの値を表示するだけのものです。
IsList関数やIsArray関数で本当にリストなのか配列なのかをチェックしています。

Sub Click(Source As Button)
    Dim listText List As String
    Dim arrayText(2) As String
    Dim cnt As Integer
    
    listText("AA") = "1番目の値"
    listText("BB") = "2番目の値"
    listText("CC") = "3番目の値"
    
    arrayText(0) = "0番目の配列値"
    arrayText(1) = "1番目の配列値"
    arrayText(2) = "2番目の配列値"
    
    cnt = 1
    If Islist( listText ) Then
        Forall x In listText
            Msgbox "リストタグ【" & Listtag( x ) & "】: " & x, MB_OK, "リスト変数の" & Cstr(cnt) & "番目"
            cnt = cnt + 1
        End Forall
    End If
    
    cnt = 1
    If Isarray( arrayText ) Then
        Forall y In arrayText
            Msgbox y, MB_OK, "配列の" & Cstr(cnt) & "番目"
            cnt = cnt + 1
        End Forall
    End If
End Sub




Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: