メインコンテンツまでスキップ
バージョン:25.2

Packing Your Bag – Variables and Other Containers

Packing Your Bag - Variables and Other ContainersPacking Your Bag - Variables and Other Containers

Variables aren’t the only kind of container in SenseTalk, and they have some unusual characteristics. Before packing the bag for your adventure it’s a good idea to understand just what sort of container it is!

多くのスクリプト言語と同様に、SenseTalkの変数は事前に宣言しなくても使用できます。他の多くの言語とは異なり、変数に値を格納する前に使用した場合、変数名はその名前として評価されます…

put Hello --> Hello

…ただし、定義済み変数の場合は除きます。picopyrightSign などの定義済み変数は定数のように考えることができますが、必要に応じて変更できる点が異なります(つまり、通常の変数として使用できます)。すべての定義済み変数を確認するには、次のコマンドを実行してください(注: predefinedVariables は変更可能なグローバルプロパティです)。

put the predefinedVariables

変数には型がありません。どの変数にも任意の型の値を含めることができ、また、実行中の異なるタイミングでは、特定の変数に異なる型の値を含めることができます。

SenseTalkはユーザーの要望に応えようとします。文字列値が変数に格納され、その変数が算術演算に使用される場合、SenseTalkは可能な場合は自動的に文字列値を数値に変換し、演算を続行します。

詳細については、定数と定義済み変数を参照してください。

比較

変数は型付けされていないため、2つの値の等価性(または不等価性)を比較する場合、比較の種類は値自体の型によって異なります。SenseTalkはまず、両方の値が有効な数値かどうかを確認します。両方とも数値の場合、数値比較が行われます。通常はこれが望ましい動作ですが、必ずしもそうとは限りません。数値比較ではなくテキスト比較を強制するには、オペランドの一方または両方の後に「as text」を指定します。テキスト比較は、デフォルトで大文字と小文字を区別しません。詳細については、「比較演算子」を参照してください。

put 7.00 is "007" --> True (a numeric comparison is performed)
put 7.00 is "007" as text --> False

同様に、テキスト比較ではなく日付/時刻比較を強制するには、「as date」または「as time」を指定します。

put "1927-03-16" is "March 16, 1927" --> False (text comparison)
put "1927-03-16" is "March 16, 1927" as date --> True

Scope

ローカル変数はハンドラー(スクリプトまたはプロシージャ)内のスコープ内にあり、宣言されません。グローバル変数は、2つの方法のいずれかで宣言する必要があります。グローバル変数は、global という単語で始まり、その後にコンマで区切られたグローバル変数名のリストが続く行で宣言できます。これは、グローバル変数が使用される各ハンドラー(通常はハンドラーの先頭)で実行する必要があります。または、変数名を使用するたびに、その直前に global という単語を使用することもできます。詳細については、グローバル変数 を参照してください。

SenseTalkには「ユニバーサル」変数もあり、これはグローバル変数と同じように宣言および使用されます。グローバル変数とユニバーサル変数は互いに区別され、正確な意味の違いはSenseTalkが使用されるホスト環境によって定義されます。例えばEggplantでは、グローバル変数の値は実行中はすべてのハンドラーに渡って保持されますが、次の実行時にはリセットされます。一方、ユニバーサル変数はセッション中、1回の実行から次の実行まで同じ値を保持します。

変数はコンテナです

SenseTalkでは、変数の値を変更するコマンド(例:SetAddSortReplaceなど)は「コンテナ」を操作するものとして説明されます。変数は最も一般的なコンテナの種類ですが、これらのコマンドで変更できるコンテナの種類は他にもいくつかあります。リスト内の項目、プロパティリスト内のプロパティ、グローバルプロパティ、テキストファイルなどです。さらに、コンテナ内のテキストチャンク(特定の単語や行など)もコンテナです。ただし、テキストチャンクとファイルにはテキスト値しか格納できないという制限があります。そのため、リストやプロパティリストなどの非テキスト型に値を設定する操作は、その値の文字列表現になります。詳細については、コンテナを参照してください。