全部產品
Search
文件中心

ApsaraVideo VOD:EdgeScript文法

更新時間:Jul 13, 2024

本文為您介紹EdgeScript文法中注釋、標識符、資料類型、變數、運算子、語句和函數的使用規則。

說明

EdgeScript文法中不允許出現雙引號。

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函數名(參數列表)之後,且同行。

  • 函數調用

    無論內建、自訂函數,均通過函數名()進行調用。

其他

EdgeScript全文不允許出現任何雙引號。