部分実装

式と演算子#

式は一つの型付きの値を表します。数値の計算、関数呼び出し、Booleanの比較を組み合わせられます。

計算の順番#

上の行ほど先に計算します。同じ行の二項演算子は左から結び付きます。()で順番を明示できます。

優先順位 演算子 意味
高い 関数呼び出し、() 呼び出し、グループ化
↓ +値、-値、!値 符号、Booleanの反転
↓ *、/ 掛け算、割り算
↓ +、- 足し算、引き算
↓ <、<=、>、>= 大小の比較
低い ==、===、!=、!== 同じか、異なるか
function main(value: Float): Boolean {
  const scaled = value * 2 + 1;
  return !(scaled < 0);
}

!はBooleanだけに使えます。!0のような数値からの暗黙変換はありません。+もStringの連結には使いません。Stringにはstring_concatを使います。

比較と型#

==と===は、CNLでは同じ厳密な型付き比較です。!=と!==も同じです。JavaScriptのようにStringやBooleanを数値へ変換して比較しません。IntegerとFloatなど、異なる種類の値は、対応する明示変換でそろえます。

function main(value: Float, limit: Float): Boolean {
  return value >= limit;
}

FloatでNaNが含まれると、大小比較は偽になります。NaNは自分自身とも等しくありません。そのためa <= bと!(b < a)はNaNを含む場合に異なります。通常の大小比較を表したいときは、目的の演算子を直接使ってください。

Vector、Color、Fieldに対して使える演算は、それぞれの型の共通規則で決まります。任意の型がすべての演算子に対応する、という意味ではありません。型が合わなければ診断を出します。

値を選ぶ#

function main(value: Float): Float {
  return select(value >= 0, value, -value);
}

select(条件, 真の場合の値, 偽の場合の値)は値の選択です。両方の値は計算の依存関係に含まれます。片方のファイル読み込みやエラーを回避するための遅延分岐には使えません。

一般のif、&&、||、?:は未実装です。selectをそれらと同じものとして扱いません。余りや累乗などは、対応するMath関数を使います。%や**を含むJavaScriptの演算子すべてには対応していません。

このページを編集GitHubへのアクセス権が必要です。

CompNode Guide · 日本語製品ドキュメント仕様と実装範囲は各項目で区別しています。

ドキュメントを検索

検索語を入力してください。

    ↑ ↓ で結果を移動、Enter で開く · 検索はこの端末内だけで実行されます。