SenseTalkでの値
コンピュータは数値、テキスト、音声、画像を含むさまざまなデータ値を扱います。SenseTalkで最も多く取り扱う値は数値とテキストです。これらの値をさまざまな方法で組み合わせて整理する能力も重要です。SenseTalkのリストとプロパティリストを使用すると、これを実現できます。
数値
SenseTalkでの数値は、数字を使用して表記することができます:
1
634
12.908
-3
.5
18.75
または単語で:
one
six hundred thirty-four
twelve point nine zero eight
negative three
one half
eighteen and three quarters
数値で桁を区切るためのカンマを使用することはできません。なぜなら、カンマはSenseTalkで他の意味を持っているからです。たとえば、リスト内の項目を区切るなどです。ただし、大きな数値を見やすくするために数値内でアンダースコア(_)を使用することは可能です(SenseTalkによってアンダースコアは単純に無視されます)。したがって、"130万"は単語で書き出すか、1_300_000として書くことができますが、1,300,000として書くことはできません。(リストについての詳細は、以下のリストを参照してください。)
技術的な用途のため、以下の記法も受け入れられます:
- 科学的表記法("e+"または"e-"の後に10のべき乗が続く)
- 16進数、8進数、2進数表記("0x"、"0o"、"0b"で始まる)。
4.58e+6
0x8ce3
0o377
0b10011010
また、長さや距離、重さ、角度などの数値に単位を使用することもできます:
100 yards
5 pounds
12 minutes
単位についての詳細な議論については、単位を使用した数値を参照してください。
序数の数字
序数は、何かの順序や位置を示す数字です。SenseTalkでは、序数はチャンク式内で使用され、値の特定のチャンクを参照するために使われます。
序数は、数字の後に序数の接尾辞(st、nd、rd、またはth)が続く形で表されます:
1st
, 2nd
, 3rd
, 4th
, 5th
, … , 10th
, … , 31st
, … , 99th
, 100th
, 101st
, 102nd
, … , 2023rd
, …
序数は、単語で表現することもできます:
first
, second
, third
, … , twelfth
, thirteenth
, … , twenty-first
, twenty-second
, … , ninety-ninth
, hundredth
, one hundred first
, ... , two hundredth
, … , nine hundred ninety-ninth
, one thousandth
, one thousand first
, … , millionth
チャンク式では、序数はシーケンスの末尾からの逆順の カウントにも使用できます(ただし、これらの式にはダッシュが必要です):
second-to-last
, fourth-from-end
, 16th-to-final
文法:
{the} ordinal { - [to | from] - [last | end | ultimate | final] }
テキスト
SenseTalkのテキストは通常、直線の二重引用符で囲まれます:
"abc"
"The Lord of the Rings"
"Greetings, and welcome to the world of computing!"
完全な国際化(Unicode)テキストがサポートされています。ただし、引用符で囲まれたテキスト文字列で表現するのが難しい文字がいくつかあります。特に、二重引用符自体は引用符の間に使用することはできません。そうすれば、コンピュータが混乱する可能性があります。そのため、SenseTalkはquote
という特別な単語を提供しています。それはその文字を表現します。以下のように使用できます:
"John said " & quote & "Hello!" & quote
アンパサンド(&
)はテキストを連結し、それを単一のより長い文字列に結合します。したがって、上記の表現は次のテキストを結果として出力します:
John said "Hello!"
引用符で囲まれたテキストに直接含めることができない別の一般的な文字は、テキストの次の行とを分離するために使用されるリターン文字です。SenseTalkでは、return
という単語がリターン文字を表します:
"This is line 1." & return & "This is line 2."