fluorite12

整数リテラル 123

1個以上の数字の列は整数リテラルになります。

$ flc '123'
# 123

0で始まる数字列であっても常に10進数として解釈されます。

$ flc '00123'
# 123

16進整数リテラル 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