全部产品
Search
文档中心

CDN:EdgeScript语法

更新时间:Dec 02, 2024

本文为您介绍EdgeScript语法中注释、标识符、数据类型、变量、运算符、语句和函数的使用规则。

说明
  • EdgeScript语法中不允许出现双引号。

  • 如果您在编写边缘脚本的过程中,使用到需要转义的字符,例如单引号,您可以使用tochar函数来表示转义字符,例如tochar(39)就是单引号。关于tochar函数的更多介绍,敬请参见tochar函数详解

EdgeScript语法使用规则,请参见下表:

语法

规则

注释

以#开头的当前行后续内容,均为注释。例如:# this is annotation。

标识符规则

  • 由字母、数字、下划线组成,数字不能开头,区分大小写。

  • 变量名(内置 、自定义)和函数名(内置 、自定义)均遵守标识符规则。

数据类型

  • 字符串

    字面常量:使用单引号括起来,例如:'hello, EdgeScript'

  • 数字

    字面常量:十进制数字,例如:10、-99、1.1。

  • 布尔值

    字面常量:"true"、"false"。

  • 字典

    字面常量如下:

    • []:空

    • ['key1', 'key2', 100]

      • 1 -> 'key1'

      • 2 -> 'key2'

      • 3 -> '100'

    • ['key1' = 'value1', 'key2' = '1000']

      • 'key1' -> 'value1'

      • 'key2' -> 1000

变量

  • 定义

    赋值即定义。

  • 使用

    • 内置和自定义变量,均由变量名进行引用 。

      • 引用内置变量:host

      • 引用自定义变量:seckey

    • 为强调变量的内置属性,可通过$进行引用。

      引用内置变量:$host

    • 自定义变量的名称不能与内置变量同名。

      内置变量,请参见EdgeScript内置变量表

运算符

  • = :赋值运算符

    • 例如:seckey = 'ASDLFJ234dxvf34sDF'

    • 例如:seckeys = ['key1', 'key2']

  • - :负号运算符

    例如:inum = -10

  • 对各数据类型的操作,不再另行支持运算符,均由内置函数支持,请参见条件判断相关

    • 各数据类型内置函数支持

      • 字符串类型内置处理函数。

      • 数字类型内置处理函数。

      • 字典类型内置处理函数。

    • 示例

      • sval = concat(sval, 'trail')

      • len(arrvar)

语句

  • 条件判断语句

    if condition {   
       ...
    }
    
    if condition1 {   
       if condition2 {
            ...
       }
    }
    
    if condition {
       ...
    } else {
       ...
    }
  • 语句解释

    • condition可由如下语法元素组成:

      • 字面值

      • 变量

      • 函数调用

    • body部分

      • 允许空body。

      • 允许多语句:一行一条语句。

    • 支持多层嵌套

    • CodingStyle

      语法强制要求左大括号跟随在if condition之后,且同行。

  • for循环

    a = ['a', 'b', 'c', 'd']
    def for_func () {
        for k, v in a {
            if eq(v, 'c') {
                return true
            }
        }   
    }
    for_func()
    
    ##########################################################################################
    
    a = ['a' = 1, 'b' = 2, 'c' = 3, 'd' = 4, 'e' = 5, 'f' = 6]
    def for_func () {
        for k, v in a {
            if eq(k, 'c') {
                return true
            }
        }   
    }
    for_func()
    
    ##########################################################################################
    
    num = 0
    def for_func () {
        a = [0,1,2,3,4,5,6,7,8,9]
        for k ,v in a {
            b = [0,1,2,3,4,5,6,7,8,9]
            for k1 ,v1 in b {
                c = [0,1,2,3,4,5,6,7,8,9]
                for k2 ,v2 in c {
                    num = add(num, 1)
                    if and(eq(v, 3), eq(v1, 5), eq(v2, 7)) {
                        return true
                    }
                }
            }
        } 
    }
    for_func()
  • 注意事项:

    • for循环只能用来遍历字典或数组类型的数据。

    • 没有break等关键字,建议配合自定义函数使用,在需要的时候进行return来打破循环。

    • 支持多层嵌套。

    • CodingStyle

      语法强制要求左大括号跟随在for...之后,且同行。

函数

  • 定义语法

    def 函数名(参数列表) {
       ...
    }
  • 定义说明

    • 形参列表

      • 允许无参。

      • 允许多参:由逗号分隔。

    • 函数体部分

      • 允许空body。

      • 允许多语句:一行一条语句。

      • 返回值:支持return语句。

    • CodingStyle

      语法强制要求左大扩号跟随在def函数名(参数列表)之后,且同行。

  • 函数调用

    无论内置、自定义函数,均通过函数名()进行调用。