Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

List

リストから要素を返します。

Synopsis

List(list[,position[,end]])

List(list[,position[,end]])=value

引数

list 有効なリストとして評価される式。Caché list は、ListBuild、または ListFromString を使用して作成するか、List を使用して別のリストから抽出する必要があります。
position オプション — 返されるリスト要素の位置を指定する整数、あるいは end が指定されている場合はサブリスト範囲の開始位置を指定する整数。ゼロ以外の正の整数に評価される式を指定します。リストの最後の要素を指定するには -1 を使用します。position が指定されていない場合、既定の 1 (list 内の最初の要素) になります。
end オプション — サブリストの範囲で最後の要素である、リスト要素の位置を指定する整数。整数に評価される式を指定します。リストの最後の要素を指定するには -1 を使用します。

概要

List は、リストから要素を返します。返される要素は、指定されたパラメータによって決まります。

  • List(list) は、リストの先頭要素文字列を返します。

  • List(list,position) は指定した位置に示されている要素を返します。position の引数は、必ず整数に評価されます。リスト要素は、1 から番号が付けられます。

  • List(list,position,end) は "サブリスト" を返します。この "サブリスト" には、指定した開始位置 (position) から指定した終了 (end) 位置までのリスト要素が含まれます。

ListNext を使用して、リストから要素を順番に返すこともできます。

引数

list

1 つ以上の要素を含む、エンコードされたリスト文字列。リストは、ListBuild または ListFromString を使用して作成するか、List 関数を使用して、他のリストから抽出することができます。有効な list 引数は以下のとおりです。

myList = ListBuild("Red", "Blue", "Green", "Yellow")
Println List(myList, 2) 'prints Blue
subList = List(myList,2,4)
Println List(subList, 2) 'prints Green

以下の例では、subList は有効な list 引数ではありません。List は通常の文字列として返された 1 つの要素であり、エンコードされたリスト文字列ではないからです。

myList = ListBuild("Red", "Blue", "Green", "Yellow")
subList = List(myList,2)
Println List(subList,1)  ' INVALID OPERATION

List 関数を通常の文字列に対して使用すると、実行時エラーが発生します。

position

返されるリスト要素の位置。リスト要素は、1 からカウントされます。position を省略した場合、最初の要素が返されます。position の値が 0、またはリストの要素の数よりも大きい場合、Caché は <NULL VALUE> エラーを発行します。position の値がマイナス 1 (–1) の場合、List はリストの最後の要素を返します。

end 引数が指定されている場合、position は要素範囲の最初の要素を指定します。(positionend が同じ値のとき) 要素が 1 つだけ返されますが、その値はエンコードされた文字列として返されます。したがって、以下の例で示すように List(x,2) は List(x,2,2) と同一ではありません。

MyList = ListBuild("A","B","C")
x = List(MyList,2)
y = List(MyList,2,2)
If x=y Then
  Println "Lists are identical"
Else
  Println "Lists not identical"
End If

end

要素範囲の最後の要素の位置。end を指定するには、position を指定する必要があります。end が指定されている場合、返される値はエンコードされたリスト文字列です。この文字列はエンコードされているため、他の List 関数によってのみ処理されます。

end の値によって、次のように処理されます。

  • position よりも大きい場合、要素のリストを含むエンコードされた文字列が返されます。

  • position と等しい場合、1 つの要素を含むエンコードされた文字列が返されます。

  • position よりも小さい場合、NULL 文字列 ("") が返されます。

  • list の要素数よりも大きい場合、リストの最後の要素を指定するのと同じです。

  • マイナス 1 (–1) のとき、リストの最後の要素を指定するのと同じです。

end を指定する場合、position 値はゼロ (0) に指定できます。この場合、0 は 1 と同じです。

List(list,1) と List(list,1,1) は同じではありません。前者は文字列を返すのに対し、後者は要素が 1 つのリストを返します。また、前者は <NULL VALUE> エラーを受けるのに対し、後者は受けません。返す要素がない場合は NULL 文字列を返します。

fruit = ListBuild("apple","banana","pear")
PrintLn List(fruit,1)
PrintLn List(fruit,1,1)

List のエラー

以下の List 引数値では、エラーが発生します。

  • list パラメータが有効なリストとして評価されない場合は、List で <LIST> エラーが発生します。ListValid 関数を使用すると、リストの有効性を判定できます。

  • list パラメータが NULL 値を含む有効なリストとして評価される場合、またはリストと NULL 値が連結される場合は、List で <NULL VALUE> エラーが発生します。以下はすべて有効なリスト (ListValid に従う) ですが、List では <NULL VALUE> エラーが発生します。

    PrintLn List("")
    PrintLn List(ListBuild())
    PrintLn LIST(ListBuild(NULL))
    PrintLn LIST(ListBuild(,))
    PrintLn LIST(ListBuild() & ListBuild("a","b","c"))
  • position パラメータが 0 または 1 未満の小数で、end パラメータが使用されていない場合は、List で <NULL VALUE> エラーが発生します。

  • position パラメータの値が存在しないリスト・メンバを参照し、end パラメータが使用されていない場合は、List で <NULL VALUE> エラーが発生します。

  • position パラメータの値が、未定義の値を持つ要素を特定し、end パラメータが使用されていない場合は、List で <NULL VALUE> エラーが発生します。

  • position パラメータ値または end パラメータの値が -1 未満の場合は、List で <RANGE> エラーが発生します。

リストの設定

等号の左辺で List を使用して、リストの指定した要素を別の要素の値に置換できます。以下の操作を実行できます。

  • 要素の値を新しい値に置き換える

    fruit = ListBuild("apple","banana","pear")
    PrintLn List(fruit,2)
    List(fruit,2) = "orange"
    PrintLn List(fruit,2)
  • 要素の値の範囲を新しい値の同じ数に置き換える

    fruit = ListBuild("apple","peach","pear","plum")
    PrintLn List(fruit,2)," ",List(fruit,3)
    List(fruit,2,3)=ListBuild("orange","banana")
    PrintLn List(fruit,2)," ",List(fruit,3)
  • 要素の値の範囲を大きな新しい値または小さな新しい値に置き換える

    fruit = ListBuild("apple","pear","plum","tangerine")
    PrintLn List(fruit,2)," ",List(fruit,3)," ",List(fruit,4)
    List(fruit,2,3)=ListBuild("orange","banana","peach")
    PrintLn List(fruit,2)," ",List(fruit,3)," ",List(fruit,4)," ",List(fruit,5)
  • 要素または要素の値の範囲を削除する

    fruit = ListBuild("apple","pear","plum","tangerine")
    PrintLn List(fruit,2)," ",List(fruit,3)," ",List(fruit,4)
    List(fruit,2,3)=""
    PrintLn List(fruit,2)

リストの最後の要素を置換するには、position に -1 を使用します。List(inlint,-1)=valueList(inlint,-1,-1)=value で行われる処理は異なります。List(inlint,-1)=value は最後の要素のを置換しますが、List(inlint,-1,-1)=value は、最後の要素を削除して、指定されたリストを追加します。

リストの最後の要素を削除するには、List(inlint,-1,-1)="" を使用します。

以下の例は List 関数の使用法を示しています。

myList = ListBuild("Red","Blue","Green","Yellow")
color4 = List(myList,4) ' returns value of the 4th element
Println color4             ' prints Yellow
sublist = List(myList,2,3) ' returns the 2nd and 3rd elements as a list
Println List(sublist,1)    ' prints Blue

複数の要素を持つリストは、文字をエンコードする表示されないリストを含むため、Println は、単一のリスト項目を表示するためだけに使用してください。

関連項目

FeedbackOpens in a new tab