異なる種類の組み合わせ
一般的な暗黙の型変換はありません。各演算子は、理解できる種類の組み合わせを少数だけ持っています。
それ以外の組み合わせでもエラーは発生しません。何も知らせずに Integer の 0 (大小比較では
false) を返し、スクリプトは実行を続けます。これは意図的な動作で、1 つの想定外の値でアクションが途中で
中止されないようにするためです。その反面、誤った式は何も知らせずに失敗するため、結果がおかしいときは
UtilityPrint で確認してください。
| 演算子 | 受け付ける組み合わせ → 結果 | それ以外 |
|---|---|---|
+ | Text + Text → Text (連結) Integer + Integer → Integer Integer と Real の混在 → Real | 0 |
- * | Integer ∘ Integer → Integer Integer と Real の混在 → Real | 0 |
/ | Integer / Integer → Integer、0 方向に切り捨て (-7 / 2 は -3)Integer と Real の混在 → Real 0 による除算 → 0 または 0.0、エラーなし | 0 |
== != | 同じ種類 → 値で比較 (Text は完全一致で大文字と小文字を区別、Window はハンドルで比較) Integer と Real → 数値として比較 ( 5 == 5.0) | 常に等しくない: 1 == true、"5" == 5、w == 0 はすべて false |
< <= > >= | 2 つの数値 (Integer と Real の混在可) → 数値の大小 Text と Text → 序数比較、大文字と小文字を区別 (UTF-16 コード単位: "Z" < "a") | 4 つとも false。そのため、ここでは !(a < b) は a >= b を意味しない |
&& || ! | 任意の種類、truthy かどうかで判定 → Bool | |
& | ^ | Integer ∘ Integer → Integer | 0 (Bool や Real のオペランドも該当: true & true は 0) |
<< >> | Integer を 0~63 の Integer でシフト → Integer。>> は符号を保持: -16 >> 2 は -4。 | 0。シフト量が 0 未満または 63 を超える場合も含む |
単項 - | Integer → Integer、Real → Real | 0 |
~ | Integer → Integer (~0 は -1) | 0 |
種類間の変換:
| 変換元 → 変換先 | 方法 |
|---|---|
| Integer → Real | Real と宣言された組み込み関数のパラメーターに渡すと自動的に変換。それ以外では n * 1.0 (Real との算術演算はすべて Real になる) |
| Real → Integer | MathRound(r) (0.5 は 0 から遠い方へ丸め)、MathFloor(r)、または MathCeil(r) |
| 任意 → Text | StringFormat("{0}", value, "") |
| Bool → Integer | if (b) n = 1; else n = 0; |
| Text → 数値 | ユーザーが入力したもの (その地域の形式。桁区切りはその形式に従う必要があるため、日本語 (日本) のユーザーでは 1,5 は数値ではありません) には StringToNumber(text, false)、機械向けのテキスト (小数点は .、桁区切りなし) には true。整数値なら Integer、それ以外は Real。数値でない可能性がある場合は先に StringIsNumber を使用 (この例を参照)。 |
| 数値 → Text | StringFromNumber(n, decimals, invariantCulture)。decimals を -1 にすると必要なだけの桁数 |
| Integer → 16 進の Text | これを行う組み込み関数はありません。シフトを使って組み立てます (この例を参照)。 |