言語の主要要素
SenseTalkを一言で説明する
SenseTalkは強力で読みやすい高水準言語です。それは英語に似ており、可能な限り暗号化されたシンボルや厳格な構文を避けるように設計されています。これにより、読みやすさと書きやすさが両立されています。このセクションでは、言語の多くの特徴を簡単に説明します。
ここで提示する情報は、SenseTalkのほとんどの主要な要素についての簡潔な概観を提供することを目指しています。経験豊富なスクリプト作成者やプログラマーにとっては、これがSenseTalkの使用を始めるための十分な情報となるものです。他のユーザーも、このセクションをざっと見て、進む先に何が控えているかを感じ取れることでしょう。
また、物事がどのように機能するかを速やかに再確認したい時に、このセクションは便利な参照情報となります。各トピックについては、より完全な情報への参照案内があります。
スクリプト
SenseTalk _script_は一連のコマンドステートメントです。これは通常、あなたのコンピュータ上のテキストファイルとして保存されます。スクリプトが_run_されると、各ステートメントが順番に実行されます。コマンドは通常、動詞で始まり、処理が順番に行で分かれて書かれます。
スクリプトを書き始めると、SenseTalkの特徴の一つとして色分けに気づきます。スクリプトは色分けされ、スクリプトのさまざまな部分が何であるかを示しています。たとえば、変数は文字列リテラルとは異なる色になります。太字と斜体もスクリプトの異なる要素を区別するために使用されます。複数のスクリプトテーマがあり、スタイリングもEggplant Functional Script Preferences Theme Paneで完全にカスタマイズできます。
SenseTalkは大文字と小文字を区別しません。命令は大文字、小文字、または混在して書かれても意味は変わりません。
例:
Put 7 Into days
multiply Days by 4
PUT DAYS -- Prints "28"
(詳細はScript Structure and Control Flowを参照してください)
Simple Values
SenseTalkにはシン プルな値があります。
例:
5 -- 数値
sixty-four -- 言葉で表現された数値
"❤ hello ❤" -- テキスト文字列 (国際ユニコードテキストが使用可能)
@"Hello\nNew\nWorld" -- エスケープコード付きテキスト文字列
empty -- 定数
0x7F -- 16進数
<3FA64B> -- バイナリデータ
(詳細はValuesを参照してください)
テキストブロック
複数行のテキストブロックは {{
と }}
で囲むことができます。この種類のテキストブロックは、オブジェクトのスクリプトを動的に設定したり、データブロックを定義したりするのに特に便利です。
例:
set names to {{
Harry Potter
Hermione Granger
Ron Weasley
}}
(詳細はValuesを参照してください)
テキストブロックは、他の言語の「here is」ブロックに似たラベルを使用できます。これにより、ネストも可能です。
演算子
演算子は値を式に結合します。一般的な(そしていくつかの非一般的な)演算子が使用可能です。 put
コマンドは、宛先を指定せずに式の値を表示します。
例:
put 3 + 2 * 7 -- Prints: 17
put five is less than two times three -- Prints: true
put "a" is in "Magnificent" -- Prints: true
put 7 is between 5 and 12 -- Prints: true
put "poems/autumn/InTheWoods" split by "/" -- Prints: [poems,autumn,InTheWoods]
例:
括弧は、操作をグループ化するために使用できます。
put ((3 + 2) * 7) is 35 -- true
(詳細はExpressionsを参照)
結合
テキスト文字列は &
または &&
を使って結合(連結)できます。 &
演算子は文字列を直接結合し、&&
は間にスペースを挟んで結合します。
例:
put "red" & "orange" -- "redorange"
put "Hello" && "World" -- "Hello World"
(詳細はExpressionsを参照)
値の割り当て
値はコンテナに保存することができます。変数はシンプルなコンテナです。 put into
または set to
コマンドのいずれかを使用して、コンテナに値を割り当てることができます。
例:
put 12 into counter
set counter to 12
変数は使用されると自動的に作成されます。最初に宣言する必要はありません。
(詳細はContainersを参照)
Put Command
put
コマンドは、コンテナの内容の前後に値を追加することもできます。
例:
put 123 into holder -- "123"
put "X" before holder -- "X123"
put "Y" after holder -- "X123Y"
(詳細はContainersを参照)
型のない言語
SenseTalkは型のない言語です。変数はどんな型の値でも保持できます。
例:
put 132 into bucket -- bucket is holding a number
put "green cheese" into bucket -- now bucket holds a text string
必要に応じて値が自動的に変換されます。
例:
put ("1" & "2") / 3 -- 4
(詳細はExpressionsを 参照)
引用符なしの文字列
まだ値が格納されていない任意の変数は、そのまま文字列として扱われます。この方法で、それらは引用符なしの文字列として使用でき、便利です。
例:
put Bread && butter -- "Bread butter"
(詳細はContainersを参照)
定数
一部の単語は、その名前に対応する事前定義された固定値を持っています。これらは一般的に「定数」と呼ばれますが、SenseTalkはあなたが選んだ任意の変数名を、最大限に活用できるようにデザインされています。そのため、実際に事前定義されている定数はほんの少しであり、ほとんどの単語は変数として使用してその値を変更することができます。
実際の定数には true
、false
、end
、empty
、return
が含まれます。
例:
put street1 & return & street2 & return & city into address
if line 2 of address is empty then delete line 2 of address
事前定義された変数 には、数値や特殊文字(引用符やタブなど)が含まれます。
例:
put 2*pi -- 6.283185
add one to count
put "Edward" && quote & "Red" & quote && "Jones" -- Edward "Red" Jones
put comma after word 2 of sentence
(詳細はValuesを参照)
コメント
Comments で説明情報を追加することができます。コメントは、スクリプトが実行中のSenseTalkによって無視されます。記号--
(二つのダッシュ)、—
(エムダッシュ)、または//
(二つのスラッシュ)はその行の残り部分をコメントとしてマークします。
長い(または短い)コメントの場合、コメントを(*
と*)
で囲むことができます。このテクニックは、一時的にスクリプトの一部をオフにする(または「コメントアウト」する)ために時々使用されます。これらの「ブロックコメント」はネストすることができます。
例:
このスクリプトは二つの数値を加算し、その合計を返します。インラインコメントは二つのダッシュ記法(--
)で表記されています。
params a,b -- この行では二つのパラメータの名前を宣言します
return a+b -- 合計を返します(それだけです!)
例:
この大きなコードブロックは、括弧とアスタリスクの記法 (*
と *)
を使用してコメントアウトされています。これらはネストされています。
(*
put "the total so far is : " & total -- 値を確認
put "the average is : " & total / count (* ネストされたコメント *)
*)
(詳細はScript Structure and Control Flowを参照してください)
チャンク表現
チャンク式 は、値の一部を指定するために使用できます。
例:
put word 2 of "green cheese" -- "cheese"
put item 3 of "one,two,three,four" -- "three"
put lines 1 to 3 of bigText -- 最初の3行
put the first 3 lines of bigText -- これも最初の3行
put any character of "abcdefg" -- ランダムに選ばれた1文字
負の数値は値の末尾から数えます:
例:
put item -3 of "one,two,three,four" -- "two"
put chars 2 to -2 of "abcdefg" -- "bcdef"
コンテナのチャンクもまたコンテナです(それらに保存できます)。
例:
put "green cheese" into bucket -- bucketには"green cheese"が含まれています
put "blue" into word 1 of bucket -- bucketには"blue cheese"が含まれています
put "ack" into chars 3 to 4 of word 1 of bucket -- bucketには"black cheese"が含まれています
(詳細はChunk Expressionsを参照してください)
Tech Talk
SenseTalkのチャンク式は、他の言語の部分文字列関数やスライスに類似した機能を提供しますが、それよりも表現力があり、強力です。
リスト
リスト は、カンマで区切られた値を角括弧 [
]
で列挙するだけで作成できます。
リストは通常、角括弧[]で囲まれますが、歴史的な理由から括弧で囲むこともできます。
例:
put [1,2,3]
put ["John",67, "555-1234", cityName]