リストおよびプロパティリストに関するローカルプロパティとグローバルプロパティ

ここで説明するSenseTalkグローバル/ローカルプロパティは、スクリプト内におけるリストおよびプロパティリストの振る舞いを管理するものです。これらのオプションを設定したり変更したりすると、フォーマッティング方法や挿入方法、その他のアクションに作用し、環境をカスタマイズすることができます。

SenseTalkにおけるリストおよびプロパティリストの詳細情報は、リストおよびプロパティリストをご覧ください。

ローカルプロパティとグローバルプロパティの扱い方に関する追加情報は、SenseTalkにおけるローカルプロパティとグローバルプロパティをご覧ください。

the listFormatグローバルプロパティ

値:必須の値3つとオプションで追加の値2つを含んだプロパティリスト。

  • prefixテキストへの変換時にリストの先頭に付ける文字。
  • separatorテキストへの変換時に各リストアイテム間に表示する文字。
  • suffixテキストへの変換時にリストの末尾に付ける文字。
  • quotes(オプション):このプロパティでは、リスト内の値への引用符の付け方を定義します。デフォルトでは、リスト用にquotesの値が設定されないため、リスト値の引用符付けはthe defaultQuoteFormatグローバルプロパティの設定によって管理されます。
  • indent(オプション):このプロパティでは、リスト内のアイテムの字下げに使用するテキスト値を設定できます。indentの値を設定すると、各リストアイテムが別々の行に表示され、値は構造のネスティングに応じた倍数のindent値によって字下げされます。

デフォルト:初期設定では、必須の3つの値のみが設定されています。

  • prefix (
  • separator ,
  • suffix )

挙動:このグローバルプロパティでは、リストをテキスト形式に変換するときに使用するフォーマットを定義します。リストをテキストとして表示する際、リストはprefixとsuffixの値によって囲まれ、各リストアイテム間にはseparatorの値が使用されます。

定義済みのthe listFormatの値としては、boxListFormatjsonListFormatおよびstandardListFormatがあります。

例:

set the ListFormat's separator to period // キーワード「period」を使ってthe ListFormatのseparatorを「.」に設定します

例:

set the listFormat's quotes to "^"

put ("cheese","meat","fruit") // 「(^cheese^,^meat^,^fruit^)」を表示します

例:

set the listformat to (separator:";")

put ("cheese","meat","fruit") // 「cheese;meat;fruit」を表示します

例:

set the ListFormat.prefix to "-->"

put ("cheese","meat","fruit") // 「-->cheese,meat,fruit)」を表示します

例:

set the ListFormat to (separator:";",quotes:"^")

put ("cheese","meat","fruit") // 「^cheese^;^meat^;^fruit^」を表示します

例:

set the listformat to boxListFormat

put (1,2,3,5,7) // 【1】 【2】 【3】 【5】 【7】を表示します

例:

set the listformat to jsonListFormat

put (1,2,3,5,7)

上の例からの出力は、Runウィンドウにおいて次のように表示されます。

[

1,

2,

3,

5,

7

]

例:

set the listFormat.prefix to "[["

set the listFormat's suffix to "]]"

put (1,2,3,4) // 「[[1,2,3,4]]」を表示します

set the listFormat's separator to " & "

set the listFormat's quotes to ("<",">")

put (5,6,7,8) // 「[[<5> & <6> & <7> & <8>]]」を表示します

set the listFormat's indent to " "

put (1,(10,20,30),2)

上の例の最後のputコマンドは、Runウィンドウにおいて次のように表示されます。

[[

<1> &

[[

<10> &

<20> &

<30>

]] &

<2>

]]

例:

set the listformat to standardListFormat

put (1,2,3,5,7) // 「(1,2,3,5,7)」を表示します

関連:

その他の演算子で説明したsplit byおよびjoined by演算子は、テキストからリストへ、またその逆へと明示的に変換するやり方です。リストの扱い方についての詳細は、 リストおよびプロパティリストをご覧ください。

the propertyListFormatグローバルプロパティ

値:以下のプロパティ値を含むことができるプロパティリスト。

  • prefixテキストへの変換時にリストの先頭に付ける文字。
  • entrySeparatorテキストへの変換時にリストのキー/値の各組同士の間に表示する文字。
  • keySeparatorテキストへの変換時にキーとその値との間に表示する文字。
  • suffixテキストへの変換時にリストの末尾に付ける文字。
  • quotesテキストへの変換時に、プロパティ値の引用符付けに使用する文字または文字群。
  • emptyRepresentationテキストへの変換時、オブジェクトにプロパティがない場合に使用する文字または文字群。
  • indent(オプション):このプロパティでは、リスト内のアイテムの字下げに使用するテキスト値を設定できます。indentの値を設定すると、各リストアイテムが別々の行に表示され、値は構造のネスティングに応じた倍数のindent値によって字下げされます。
  • asTextEnabled TrueFalse

デフォルト:以下の振る舞いのところを参照してください。

  • prefix (
  • entrySeparator 「, 」(コンマとスペース)
  • keySeparator :
  • suffix )
  • quotesStandard
  • emptyRepresentation (:)
  • asTextEnabledTrue

挙動:このグローバルプロパティでは、プロパティリスト(オブジェクト)をテキストに変換するときに使用するフォーマットを定義します。

オブジェクトのテキスト表現が必要になったとき、asTextEnabledTrue(デフォルト)になっていると、オブジェクトにasText関数メッセージが送られて、そのテキスト表現を取得します。オブジェクトがこのメッセージに対応しない場合、asTextまたはasTextFormatプロパティを使ってテキスト表現を取得します。

asTextEnabledFalseになっていたり、どのasText機構によっても値が得られなかったりする場合には、別の値が使われます。その場合、オブジェクトのプロパティ群は(キーのアルファベット順で)並べられ、先行する各キー(プロパティ名)とその値との区切りにはkeySeparator(デフォルトでは「:」)が、項目間の区切りにはentrySeparator(デフォルトでは「, 」)が使用されます。

プロパティ値の引用符付けはquotesの値に従います(プロパティリストの場合、デフォルトはStandard。後述のthe defaultQuoteFormatグローバルプロパティを参照)。テキスト全体は、prefixsuffix(デフォルトでは「(」と「)」)で囲まれます。オブジェクトにプロパティがない場合は、emptyRepresentationプロパティの値(デフォルトでは「(:)」)がそのテキスト表現として使われます。

keySeparatorがemptyに設定されている場合、オブジェクトのキーはリストに記載されず、その値だけが記載されます。

indentの値には、オブジェクト内の項目の字下げに使用するテキスト値を設定することができます。これをempty以外に設定すると、各項目が別々の行に表示され、各行は構造のネスティングに応じた倍数のindent値によって字下げされます。

例:

set the propertyListFormat's entrySeparator to "*"

例:

set the propertyListFormat's keySeparator to "%"

put (Capitol:"Lansing",Bird:"robin") // 「(Bird%"robin", Capitol%"Lansing")」を表示します

例:

set the propertyListFormat to (entrySeparator:";") // keySeparatorがemptyのため、値のみを表示します

put (Capitol:"Lansing",Bird:"robin") // 「robin;Lansing」を表示します

例:

put (astext:"Michigan",Capitol:"Lansing",Bird:"robin") // 「Michigan」を表示します

set the propertyListFormat.asTextEnabled to false

put (astext:"Michigan",Capitol:"Lansing",Bird:"robin") // 「(astext:"Michigan", Bird:"robin", Capitol:"Lansing")」を表示します

例:

set the propertyListFormat to (entrySeparator:"$",keySeparator:"*")

put (Capitol:"Lansing",Bird:"robin") // 「Bird*robin$Capitol*Lansing」を表示します

例:

replace properties (prefix:"[[", suffix:"]]", entrySeparator:"; ", \

keySeparator:" is ") in the propertyListFormat

put (A:1,C:3,B:2) -- [[A is "1"; B is "2"; C is "3"]]を表示します

delete the propertyListFormat's keySeparator

set the propertyListFormat.quotes to "None"

put (A:1,C:3,B:2) -- [[1; 2; 3]]を表示します

set the propertyListFormat.emptyRepresentation to "[[no properties]]"

put (:) -- [[no properties]]を表示します

関連:

プロパティリストをテキスト表現に変換する際の詳細については、リストおよびプロパティリストをご覧ください。

the listInsertionModeローカルプロパティ

値:item by itemnested

デフォルト:the defaultListInsertionModeグローバルプロパティ(初期設定はitem by item

挙動:このローカルプロパティでは、アイテムのリストが別のリストに追加されるときのアイテムの振る舞いを管理します。このプロパティをitem by itemに設定すると、追加元のリストからの各アイテムが別々に追加されます。nestedに設定すると、追加元のリストがネストされたリストとして追加されます。

the listInsertionModeの値は、ハンドラごとのローカルな値です。ハンドラの実行開始時、そのハンドラ内のthe listInsertionModeは、the defaultListInsertionModeグローバルプロパティの値に初期設定されます。

例:

set the ListInsertionMode to nested // the ListInsertionModeローカルプロパティをデフォルトの「item by item」から変更します

例:

set the listInsertionMode to nested

put ("maple","oak","pine") into localtrees

insert ("willow","sassafras") after localtrees

log localtrees // 「(maple,oak,pine,(willow,sassafras))」を表示します

例:

put (1,2,3,4) into list // (1,2,3,4)

put ("A","B") into otherList // (A,B)

insert otherList after item 2 of list // (1,2,A,B,3,4)

set the listInsertionMode to "nested"

insert otherList after item 2 of list // (1,2,(A,B),A,B,3,4)

例:

set Biggest to ("sun","earth")

set Smallest to ("moon","you")

log myNestedList(Biggest,Smallest,2) // 「(sun,(moon,you),earth)」を表示します

insert Smallest before item 2 of Biggest // the ListInsertionModeはデフォルトの「item by item」の設定のままです

log Biggest // 「(sun,moon,you,earth)」を表示します

to myNestedList InitialList,SecondaryList,position // カスタム関数ハンドラ「myNestedList」を、3つのパラメータとともに宣言します

set the ListInsertionMode to nested // ここでthe ListInsertionModeローカルプロパティを指定することは、すなわち、この設定がこの関数ハンドラでのみ有効になり、初期スクリプトハンドラでは有効にならないということです

insert SecondaryList before item position of InitialList

return InitialList

end myNestedList

ヒント:the listInsertionModeローカルプロパティは、プロパティを呼び出した特定のハンドラの振る舞いだけを変更したいときに使用します。現在の実行時環境内で設定を持続させ、スクリプトやハンドラ間で保持したい場合は、(the listInsertionModeローカルプロパティではなく)the defaultListInsertionModeグローバルプロパティを使用します。

関連:

the defaultListInsertionModeグローバルプロパティ

値:item by itemnested

デフォルト:item by item

挙動:このグローバルプロパティでは、アイテムのリストが別のリストに追加されるときのアイテムの振る舞いを管理します。このプロパティをitem by itemに設定すると、追加元のリストからの各アイテムが別々に追加されます。nestedに設定すると、追加元のリストがネストされたリストとして追加されます。

例:

set the defaultListInsertionMode to nested

例:

set Alignment to ("sun","earth")

set the defaultListInsertionMode to "item by item"

insert ("moon","you") after the first item of Alignment

put Alignment // 「(sun,moon,you,earth)」を表示します

例:

set People to ("Susan","Joe","Ricky","Jennifer")

set the defaultListInsertionMode to nested

insert ("Robert","Kelly") into People

log People // 「(Susan,Joe,Ricky,Jennifer,(Robert,Kelly))」を表示します

例:

put ("A","B","C") into Letters

set the defaultListInsertionMode to nested

insert (1,2) before item 2 of Letters

put Letters // 「(A,(1,2),B,C)」を表示します

ヒント:the listInsertionModeローカルプロパティは、プロパティを呼び出した特定のハンドラの振る舞いだけを変更したいときに使用します。現在の実行時環境内で設定を持続させ、スクリプトやハンドラ間で保持したい場合は、(the listInsertionModeローカルプロパティではなく)the defaultListInsertionModeグローバルプロパティを使用します。

関連:

the DuplicatePropertyKeyModeグローバルプロパティ

値:errorfirstlastlist

デフォルト:error

挙動:このグローバルプロパティでは、1つのプロパティリスト内で同じキーが繰り返し使用されていたときの処理方法を管理します。

  • このプロパティをerrorに設定すると、例外が投げられます。
  • firstまたはlastに設定すると、当該キーに与えられた最初(または最後)の値だけが使用され、重複のキーは無視されます。
  • listに設定すると、当該キーに与えられたすべての値が受け入れられ、リストに統合されます。

例:

set the DuplicatePropertyKeyMode to error // initialハンドラまたは呼び出されたハンドラ内で重複キーのあるプロパティリストの参照が行われた場合(例、 「(Capitol:"Lansing",Population:"9.928 million",Population:"26")」など)、例外を投げます

例:

set the duplicatePropertyKeyMode to last

set meal to ((beverage:"Water",dessert:"Ice Cream",entree:"Hamburger",dessert:"Cake"))

log meal // 「(beverage:"Water", dessert:"Cake", entree:"Hamburger")」を表示します

例:

set the duplicatePropertyKeyMode to list

set meal to ((beverage:"Water",dessert:"Ice Cream",entree:"Hamburger",dessert:"Cake"))

log meal // 「(beverage:"Water", dessert:(Ice Cream,Cake), entree:"Hamburger")」を表示します

関連:

プロパティリストの扱い方についての詳細は、 プロパティリストをご覧ください。

the strictPropertiesグローバルプロパティ

値:TrueFalse

デフォルト:False

挙動:このプロパティでは、プロパティリスト内で未設定のプロパティにアクセスしようとしたときの振る舞いを管理します。the strictPropertiesfalseに設定すると、SenseTalkが未定義のプロパティの値としてemptyを返します。the strictPropertiestrueに設定すると、未定義のプロパティへのアクセスによって例外が投げられます。

例:

set the StrictProperties to true // デフォルトの振る舞いを変更し、未定義のプロパティの参照時にエラーが起こるようにします

例:

set the StrictProperties to true

put (Capitol:"Lansing",Bird:"robin",Population:"9.928 million") into Michigan

Log Michigan's Song // 「Song」はプロパティリスト内で定義済みのプロパティではないため、エラーが投げられます。StrictPropertiesがfalseであれば、logコマンドによって表示されるのは空のメッセージになります

例:

put a new object into emptyObj

put (property abc of emptyObj) is empty -- 「true」を表示します

set the strictProperties to true

put (property abc of emptyObj) is empty -- 例外を投げます

the objectContainsItemDefinitionグローバルプロパティ

値:AsTextContainsNestedValueContainsKeyOrValueEquals

デフォルト:AsTextContains

挙動:このプロパティでは、演算子または関数によるプロパティリスト内のキーおよび値へのアクセス方法を管理します。このプロパティをAsTextContains(デフォルト)に設定すると、オブジェクトのテキスト値に検索値が含まれている場合にcontainsItem関数がtrueを返します。NestedValueContainsに設定すると、オブジェクトの各値に演算子が適用され、そのどれかに検索値が含まれている場合に式がtrueを生成します。そして最後のKeyOrValueEquals設定の場合、オブジェクトのキーまたは値のどれか1つと検索値が等しい場合にtrueが返されます。

例:

set the objectContainsItemDefinition to KeyOrValueEquals // オブジェクトのキーと値の両方をチェックし、検索値と一致しているかどうか確認します

例:

set State to (AsText:"Michigan",Capitol:"Lansing",Bird:"robin",Population:"9.928 million")

log State contains "robin" // 「False」を表示します

set the objectContainsItemDefinition to NestedValueContains

log State contains "robin" // 「True」を表示します

例:

set PersonalInfo to (asText:"Robert",age:31,hair:"brown",height:"5 feet 11 inches",degrees:("BS","MS"))

put "hair" is among the keys of PersonalInfo // 「true」を返します

put PersonalInfo contains "hair" // プロパティリストのテキスト値は「Robert」のため、「false」を返します

set the objectContainsItemDefinition to KeyorValueEquals

put "hair" is in PersonalInfo // hairはプロパティリストのキーであるため、「true」を返します

put "BS" is in PersonalInfo // 「BS」はプロパティリストのキーでも値でもないため、「false」を返します

set the objectContainsItemDefinition to NestedValueContains

put PersonalInfo contains "BS" // 「BS」はプロパティリスト内のネストされた値のため、「true」を返します

関連:

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant