このドキュメント内では、結合優先度の高い演算子から順に記載されています。
因子は単独で機能するリテラルや括弧類を指します。
因子は演算子の結合において、原子的な性質を持ちます。
後置演算子は基部の後ろに付与する演算子です。
後置演算子は単項のものと二項のものに分かれ、いずれも左優先結合です。
value.+
…すべての前置単項演算子は、 .
に続けて書く後置演算子のバリエーションが存在します。
以下の組はすべて同じ働きをします。
+A A.+
-A A.-
?A A.?
!!A A.!!
!A A.!
&A A.&
$#A A.$#
$&A A.$&
$*A A.$*
後置表現を使うと、一部の構文において丸括弧を削減し、可読性を向上できる場合があります。
前置演算子は基部の前に付与する演算子です。
前置演算子は右優先結合です。
$#value
前置 $#
演算子は、値の「長さ」を取得します。
$ flc '$#"123"'
# 3
$ flc '$#[1, 2, 3]'
# 3
$ flc '$#{a: 1; b: 2; c: 3}'
# 3
この演算子は値のタイプによって異なるものを返します。
タイプ | |
---|---|
文字列 | UTF16による文字の長さ |
配列 | 要素数 |
オブジェクト | 親オブジェクトを無視した、エントリの数 |
!!error
fluorite12では、例外のスローを前置 !!
演算子で行います。
スローする値はどのようなタイプの値であっても構いません。
スローした値は、キャッチした際に渡されます。
$ flc '!!"12345" !? (e => "Error ($e)")'
# Error (12345)
$&value
前置 $&
演算子は、値を JSON 形式の文字列に変換します。
$ flc '$&{a: 1; b: 2}'
# {"a":1,"b":2}
配列やオブジェクトを指定した場合、内部の要素も再帰的に JSON 化されます。
$*string
前置 $*
演算子は、与えられた文字列を JSON として解析し、その値を返します。
$ flc '$*(%> {"a": 1, "b": 2} <%)'
# {a:1;b:2}