123
1個以上の数字の列は整数リテラルになります。
$ flc '123'
# 123
0で始まる数字列であっても常に10進数として解釈されます。
$ flc '00123'
# 123
H#123abc
H#
に続いて16進数を書くことができます。
H#
の部分は大文字でなければなりませんが、16進数の部分は大文字小文字を区別しません。
$ flc 'H#FF'
# 255
1.23
実数を「整数部 .
小数部」の形で書くことができます。
実数値の表現や演算には計算誤差が含まれます。
$ flc '1.5'
# 1.5
+value
前置 +
演算子は値の数値化を行います。
値のタイプ | 数値化の結果 |
---|---|
NULL | 0 |
数値 | その数値自身 |
論理値 | TRUEなら1、FALSEなら0 |
文字列 | 数値としてパースした結果 |
ストリーム | 各要素の合計 |
主な用途は、文字列として表現されている数値データを内部的な数値に変換することです。
$ flc ' "+123"'
# +123
$ flc '+"+123"'
# 123
数値化は、値の +_
メソッドを参照します。
オブジェクトの +_
メソッドをオーバーライドすることで、数値化の処理を変更することができます。
$ flc '+{`+_`: this -> this.value * 2}{value: 100}'
# 200
-value
前置 -
演算子は数値化演算子と似ていますが、その値を負にします。
この演算子は「任意の値を数値に変換する処理」と「数値を負にする処理」を同時に行います。
$ flc '-"123"'
# -123
$ flc '-(100 + 20 + 3)'
# -123
べき乗系演算子は、べき乗演算子のみで構成されます。
べき乗系演算子は右優先結合です。
number ^ number
べき乗演算子は、左辺の値を右辺の値で累乗します。
整数の整数乗の結果も浮動小数点数で返されます。
$ flc '2 ^ 3'
# 8.0
乗除算系演算子は、乗除算に類する動作を行う演算子で構成されます。
乗除算系演算子は左優先結合です。
number * number
乗算演算子は、2つの値を乗算します。
$ flc '2 * 3'
# 6
文字列の乗算はその文字列を繰り返します。
$ flc '"abc" * 3'
# abcabcabc
配列の乗算はその配列を繰り返します。
$ flc '[1, 2, 3] * 3'
# [1;2;3;1;2;3;1;2;3]
number / number
除算演算子は、2つの値を除算します。
$ flc '6 / 3'
# 2.0
整数同士の除算でも、結果は浮動小数点数で返されます。
$ flc '7 / 4'
# 1.75
number % number
剰余演算子は、2つの値を除算し、その余りを返します。
$ flc '7 % 4'
# 3
小数も扱うことができます。
$ flc '1.75 % 0.5'
# 0.25
integer %% integer
左辺の値が右辺の値で割り切れるかどうかを返します。
$ flc '7 %% 4'
# FALSE
小数も扱うことができます。
$ flc '1.5 %% 0.5'
# TRUE
$ flc '1.75 %% 0.5'
# FALSE
加減算系演算子は、加減算に類する動作を行う演算子で構成されます。
加減算系演算子は左優先結合です。
number + number
加算演算子は、2つの値を加算します。
$ flc '1 + 2'
# 3
加算演算子は左辺の型によって異なる働きをします。
左辺の型 | 動作 |
---|---|
数値 | 左辺と右辺の和を返す |
文字列 | 左辺と右辺を連結した文字列を返す |
配列 | 左辺と右辺を連結した配列を生成する |
オブジェクト | 左辺のオブジェクトに右辺の各エントリーを代入したオブジェクトを生成する |
加算メソッド _+_
を実装することで、オブジェクトの加算演算をカスタマイズできます。
$ flc '
Obj := {
`_+_`: this, other -> this.value + other.value
}
Obj{value: 100} + Obj{value: 23}
'
# 123
number - number
減算演算子は、2つの値を減算します。
$ flc '3 - 1'
# 2