## 表达式说明

目前表达式支持的功能

- 链接符

- 数学运算符

- 条件运算符

#### 链接符

目前仅支持$feature链接符，支持访问要素的属性信息。 example

    $feature.FID //表示访问要素的FID字段

#### 数学运算

支持一般通用数学运算符，如+-*/等计算符

example

计算面积占比

    $feature.AREA/$feature.TOTALAREA

#### 条件运算

example

支持 || and or >= <=等

    $feature.ISAREA || $feature.ISRIVER

### 后续拟支持的表达式运算符和内置函数

#### Operator Precedence

Operator | Associativity | Description
--- | --- | ---
(...) | None | Grouping
f(), x.y, a[i] | Left | Function call, property access, array indexing
! | Left | Factorial
^ | Right | Exponentiation
+, -, not, sqrt, etc. | Right | Unary prefix operators (see below for the full list)
*, /, % | Left | Multiplication, division, remainder
+, -, || | Left | Addition, subtraction, array/list concatenation
==, !=, >=, <=, >, <, in | Left | Equals, not equals, etc. "in" means "is the left operand included in the right array operand?"
and | Left | Logical AND
or | Left | Logical OR
x ? y : z | Right | Ternary conditional (if x then y else z)
= | Right | Variable assignment
; | Left | Expression separator

#### Unary operators

Operator | Description
--- | ---
-x | Negation
+x | Unary plus. This converts it's operand to a number, but has no other effect.
x! | Factorial (x * (x-1) * (x-2) * … * 2 * 1). gamma(x + 1) for non-integers.
abs x | Absolute value (magnitude) of x
acos x | Arc cosine of x (in radians)
acosh x | Hyperbolic arc cosine of x (in radians)
asin x | Arc sine of x (in radians)
asinh x | Hyperbolic arc sine of x (in radians)
atan x | Arc tangent of x (in radians)
atanh x | Hyperbolic arc tangent of x (in radians)
cbrt x | Cube root of x
ceil x | Ceiling of x — the smallest integer that’s >= x
cos x | Cosine of x (x is in radians)
cosh x | Hyperbolic cosine of x (x is in radians)
exp x | e^x (exponential/antilogarithm function with base e)
expm1 x | e^x - 1
floor x | Floor of x — the largest integer that’s <= x
length x | String length of x
ln x | Natural logarithm of x
log x | Natural logarithm of x (synonym for ln, not base-10)
log10 x | Base-10 logarithm of x
log2 x | Base-2 logarithm of x
log1p x | Natural logarithm of (1 + x)
not x | Logical NOT operator
round x | X, rounded to the nearest integer, using "grade-school rounding"
sign x | Sign of x (-1, 0, or 1 for negative, zero, or positive respectively)
sin x | Sine of x (x is in radians)
sinh x | Hyperbolic sine of x (x is in radians)
sqrt x | Square root of x. Result is NaN (Not a Number) if x is negative.
tan x | Tangent of x (x is in radians)
tanh x | Hyperbolic tangent of x (x is in radians)
trunc x | Integral part of a X, looks like floor(x) unless for negative number

#### Pre-defined functions

Function | Description
--- | ---
random(n) | Get a random number in the range [0, n). If n is zero, or not provided, it defaults to 1.
fac(n) | n! (factorial of n: "n * (n-1) * (n-2) * … * 2 * 1") Deprecated. Use the ! operator instead.
min(a,b,…) | Get the smallest (minimum) number in the list.
max(a,b,…) | Get the largest (maximum) number in the list.
hypot(a,b) | Hypotenuse, i.e. the square root of the sum of squares of its arguments.
pyt(a, b) | Alias for hypot.
pow(x, y) | Equivalent to x^y. For consistency with JavaScript's Math object.
atan2(y, x) | Arc tangent of x/y. i.e. the angle between (0, 0) and (x, y) in radians.
roundTo(x, n) | Rounds x to n places after the decimal point.
map(f, a) | Array map: Pass each element of `a` the function `f`, and return an array of the results.
fold(f, y, a) | Array fold: Fold/reduce array `a` into a single value, `y` by setting `y = f(y, x, index)` for each element `x` of the array.
filter(f, a) | Array filter: Return an array containing only the values from `a` where `f(x, index)` is `true`.
indexOf(x, a) | Return the first index of string or array `a` matching the value `x`, or `-1` if not found.
join(sep, a) | Concatenate the elements of `a`, separated by `sep`.
if(c, a, b) | Function form of c ? a : b. Note: This always evaluates both `a` and `b`, regardless of whether `c` is `true` or not. Use `c ? a : b` instead if there are side effects, or if evaluating the branches could be expensive.
when(case,value,case,value,defaultValue) | 条件语句