単位付き数字の使用
SenseTalkでは、多くの種類の操作と比較のために、数字を数字またはテキストとして使用できます。数字は、抽象的な値ではなく、特定の種類の数量をよく表します。例えば、長方形の面積は「9平方インチ」と参照されたり、口座残高は$698.53を含んでいることがあります。
SenseTalkは、インチやドルなどの単位タイプを数字と関連付けることで、意味と関連性を加 えます。変数への代入とそれらの値を使用した計算は、必要に応じて単位を維持および変換します。
単位の取り扱い
単位タイプ付きの数値を指定するには、値の後に単位名を含めます。(この規則の例外は、以下に説明するドル記号 — $ — です。)SenseTalkは、単数形、複数形、略語の単位名、および面積と体積の「平方」と「立方」修飾子を認識します:
put 3 ft -- プリント:"3 feet"
set weight to four grams
put 9 sq in -- プリント:"9 square inches"
注:単位の省略形にはピリオドを含めません。
同じタイプの値のチェーンを使用できます。1つの値の後に別の値を置いたり、and
で値を結合したりします。このような表現は、体重や距離の測定に一般的に使用されます:
put 6 ft 3 in -- プリント:"6.25 feet"
set weight to 2 pounds and 3 ounces
put weight -- プリント:"2.1875 pounds"
上記の例から見ると、あなたは表現の中で単位を混在させることができます。単位は、代入と計算で必要に応じて保持または変換されます:
put 3 ft into width
add 1 yard to width-- 1 yardは自動的に3 ftに変換され、既存の幅に加えることができます
put width -- プリント:"6 feet"
put width * 4 feet into area
put area -- プリント:"24 square feet"
add 2 liters to area -- ミスマッチした単位の例外をスローします
速度(距離/時間)や体積(長さx幅x深さ)などの複雑な単位タイプを形成するために単位を組み合わせることができます:
set speed to 25 mi/hr
put speed -- プリント:"25 miles per hour"
put 3 hrs 45 min * speed -- プリント:"93.75 miles"
set accelerationOfGravity to 32 ft/s^2
set flow to 5 gallons per minute
set clickRate to 500/hr
set price to $5.96 per lb -- same as: 5.96 dollars per pound
set weight to 4 oz
put price * weight -- プリント:"$1.49"
単位の互換性についての注意
SenseTalkは、それが意味をなす場合(3フィートと1ヤードを組み合わせて6フィートを得るなど)に単位を変換して値を組み合わせます。ただし、論理的に組み合わせることができない単位(フラットな面積測定と体積測定など)を組み合わせようとすると、エラーが発生します。
単位は互換性がある(同じ種類の測定を表す)必要があります。つまり、長さの単位(例えば)は、他の長さの単位に加えることができます。具体的な単位のタイプが異なっても(メートル+フィート+インチ=OK!)これらのタイプは互換性があると言われています。
ただし、互換性のない単位との加算、減算、または比較を試みると例外がスローされます:
put average(4 in, 5 ft, 1 meter) --> 0.8752 meters
put average(4 in, 5 ft, 1 pint) -- throws an exception because of differing unit types
単位の変換
上記の通り、SenseTalkは自動的に値を一つの単位タイプから別の単位タイプに変換します。この能力は数学的な操作に特に便利です。また、明示的に単位を一つのタイプから別のタイプに変換することも可能です。
加算、減算
SenseTalkは加算や減算の操作、そして二つの値の等価性を比較するために値を互換性のある単位に自動的に変換します。加算や減算の場合、結果の値はシステム内の単位の内部順序に基づいて一つの単位タイプを別の単位タイプよりも優先します。
例えば、インチとセンチメートルを加えると、操作数の順序に関係なく結果はセンチメートルで出力されます。メートルとセンチメートルを加えると、結果はメートルです。ただし、as
演算子を使って結果タイプを指定することも可能です:
put 8 inches + 3 cm -- 8 inches をセンチメートルに変換し、それに3センチメートルを加える
-- なので出力:"23.32センチメートル"
put (8 inches + 3 cm) as inches -- 上記と同じだが、出力前にインチに変換する
-- なので出力:"9.181102インチ"
単位タイプを持つ数とプレーンな数(つまり、単位タイプのない数)の加算または減算はエラーとなります。