SenseTalkの変数
変数とは何ですか?
変数とは名前付きのコンテナです。それらは計算機の「メモリ」機能に似た値の 保持者として機能します。最も単純な計算機とは異なり、一つの数値しか保持しない一つのメモリロケーションしか持たないものが多いのに対し、あなたは多くの値を一度に異なる変数に保存することができます。また、変数に保存される値は単一の数値に限定されることはなく、任意の大きさのデータが可能です。異なる変数を追跡するために、それぞれに名前が付けられています。
SenseTalkは次の3種類の変数を提供します:
ローカル変数、グローバル変数、ユニバーサル変数の名前は、文字またはアンダースコア _
で始まる必要があります。名前は任意の長さで、文字、数字、アンダースコア、および多くの非句読点特殊文字を含むことができます。すべての変数名は大文字と小文字を区別しません(大文字と小文字は同等に扱われます)。
いくつかの有効な変数名:
Total
_new_moon_
tree23
Ω
いくつかの無効な変数名:
3options -- 変数名は数字で始まることはできません
ToBe?OrNot -- 変数名は句読点やスペースを含むことはできません
ローカル変数
ローカル変数は最も一般的です。それらはスクリプト内の単一のハンドラのコンテキスト内で存在します。ローカル変数を作成するには、スクリプト内でそれに何かを入れるだけです。たとえば、コマンド put 5 into foo
は、既に存在しない場合はローカル変数 foo
を作成し、それに数値5を格納します。
ローカル変数は、それらが使用されているハンドラ(またはスクリプト)の外部からアクセスすることはできません。別のハンドラでの foo
への参照は、その他のハンドラにローカルな別の foo
になります。ローカル変数は一時的で、ハンドラの実行が終了するとその値は消えます。
to
、on
、または function
宣言でハンドラ名の後に宣言されたパラメータは、ローカル変数の特殊なタイプです。パラメータ変数は、ハンドラが実行を開始するときにはすでにメッセージの送信者によって渡された値を含むため、他のローカル変数と異なります。他のローカル変数は、ハンドラが実行を開始するときに初期値がありません。
値が割り当てられていないローカル変数(および特殊な事前定義値を持つものは除く、定数と事前定義変数を参照)は、その名前に評価されます。これは一部の状況で便利な、引用符なしのテキスト文字列リテラルの形式を提供しますが、後でその名前の変数に何かを格納することを選択した場合に混乱を招く可能性があります。一般的には、予期しない結果を避けるために、テキストリテラルの周りに常に引用符を使用することが最善です。
未定義の変数とStrictVariablesグローバルプロパティ
まだ値が割り当てられていないローカル変数は通常、引用符なしのリテラルとして扱われます—つまり、その値はその名前と同じです:
put Hello -- "Hello"を表示する