リスト
リストとプロパティリストは、スクリプト内のデータを整理し、操作するための便利で強力な手段を提供します。このセクションでは、リストの機能を十分に利用するために知っておくべき重要な事項を紹介します。
リストの操作に関する詳細は、Chunk Expressions、および Repeat with Eachにおける制御構造の議論を参照してください。
リストとプロパティリストに加えて、SenseTalkは階層的なツリー構造も提供しており、Using XML and Tree Structures in SenseTalk Scriptsで説明されています。
リストの作成
スクリプトでリストを作成するには、カンマで区切られた1つ以上の式を四角括弧 [ ]
で囲んでリストにします。リストは全体が一行に収まる場合、括弧 ( )
で囲むこともできます。四角括弧で囲まれたリストは、リスト内の任意の項目の後に改行を入れることで複数行に分けて書くことができます(これは括弧で囲まれたリストでは機能しません)。四角括弧を使うことが推奨されています。なぜなら、これによりリストの構文が明確で一貫性があり、また他のスクリプト要素と区別がつくからです。
構文:
[ expr { , expr}... ]
( expr { , expr}... )
{ expr { , expr}... }
[ ]
{an} empty list
Eggplant Functional 20.1以前では、リストとプロパティリストの両方がデフォルトで括弧 () を使用していました。四角括弧 [] や中括弧 (それぞれ)の代わりにです。括弧はプロパティリストの有効な構文として引き続き認識されますが、混 乱を招く可能性があるため、その使用は推奨されません。
例:
put [1,3,5,7,9] into oddList
例:
put [["dog", "Fido"], ["cat", "Cleo"]] into nestedList // リストのリストを作成します
例:
set myList to ["sandwich",49,the date]
例:
set TestEnvironments = ["Windows","MacOSX","Android","iOS"]
例:
四角括弧 [] を使用してリストを複数行に分けることも可能です:
set searchPaths to [
"/Library/WebServer/Documents",
"~/Documents",
"/Users/hemingway/Documents/temp/ImportantStuff" ]
リスト、他のリストやプロパティリストを含むリストは、パラメータとして渡すことができます。パラメータとしてのリストについての詳細は、Parameters and Resultsを参照してください。
リストの内容
リストには、他のリストやプロパティリストを含む任意のタイプの値を含めることができます。
リストを構成する際に表現も使用できます:
例:
put ["geranium", pi * (2 * radius), {age:42}] into mixedList // "pi_* (2 * radius)"は表現であり、"{age:42}"はプロパティリストです
例:
put [1,[2,[3,4]],5] into nestedList // リスト'[1,[2,[3,4]],5]'を変数に格納します。
単一項目のリスト
角括弧[]を使用して作成される単一項目のリストはSenseTalkによってリストとして認識されます。角括弧は単一項目がリストであることを示しているため、カンマは必要ありません。
例:
put [12] into shortList // これは1つの項目を持つリストを作成します
スクリプト内で単一値が括弧内に含まれている場合、括弧はグループ化演算子として扱われるため、その値はリストとして扱われません。括弧内の単一項目をSenseTalkがリストとして認識するようにするには、値の後にカンマを含めます:
例:
put (12,) into shortList // これは1つの項目を持つリストを作成します
単一のアイテムリストを単一の値として扱う方法
ほとんどの目的では、単一項目を含むリストは単一の(非リスト)値と同じように扱われます。
例:
以下の例では、myListは[4]、つまり、数値4を含む単一項目のリストです。別の数値がこの値に加えられ、非リスト値であるかのように扱われます。以下の例では、この基本的な算術に続いて、変数theSum
は数値6を含みます。
put [4] into myList -- 単一項目のリストを作成する
put myList + 2 into theSum -- これは単一の非リスト値であるかのように、単一のリスト項目'4'に2を追加します
put theSum -- '6'を出力します
通常、テキストとしてそのようなリストにアクセスすると、値は角括弧内に表示されます。この動作を避けるためには、the listFormat
のprefix
およびsuffix
プロパ ティを空に設定します。
空のリスト
空のリストを作成するには、空の角括弧ペアを使用するか、empty list
というフレーズを使用します:
例:
put [] into newlist // newlistは現在、項目がないリストです
put 16 into item 1 of newlist // [16]
put empty list into item 2 of newlist // [16,[]]