このトピックでは、ディクショナリ関数の構文、説明、パラメーター、および戻り値について説明します。 このトピックでは、これらの関数の例も示します。

set

この関数は、次のように記述されます。
  • 構文:set(d, k, v)
  • 説明

    この関数を呼び出して、d パラメーターによって指定されたディクショナリの k/v ペアを設定します。

  • パラメーター
    • d: ディクショナリの名前。
    • k: キー。Data type : 任意の型。
    • v: 値。Data type : 任意の型。
  • 戻り値

    この関数は、true を返します。

    • 例 1
      outer_keys=['e66fd4aa-f281-472f-b919-fc7e7474de25', '66fee78d-1887-42ec-9119-a9b50b7fbca2']
      say(concat('keys[1]=', get(outer_keys, 1)))
      say(concat('keys[2]=', get(outer_keys, 2)))
      
      inner_keys=[]
      set(inner_keys, 'dev', '243390eb-00b7-4551-a6b8-021bb34d1674')
      set(inner_keys, 'zeus', '4747d33b-12b0-45e6-ac10-a8e191d6adaa')
      
      def echo_each(k, v, u) {
          s = concat('keys[', k, ']=', v)
          say(s)
      }
      foreach(inner_keys, echo_each, [])
      
      Output:
      keys[1]=e66fd4aa-f281-472f-b919-fc7e7474de25
      keys[2]=66fee78d-1887-42ec-9119-a9b50b7fbca2
      keys[dev]=243390eb-00b7-4551-a6b8-021bb34d1674
      keys[zeus]=4747d33b-12b0-45e6-ac10-a8e191d6adaa                                                                                                                                              
    • 例 2
      d_inner = []
      set(d_inner, 'name', 'inner dsl')
      
      d_outer = []
      set(d_outer, 'dictA', d_inner)
      
      v = get(d_outer, 'dictA')
      if v {
          v = get(v, 'name')
          if v {
              add_rsp_header('X-DSL-NESTED-DICT', v)
          }
      }
      
      Output: Add a response header.
      X-DSL-NESTED-DICT: inner dsl

get

この関数は、次のように記述されます。
  • 構文:get(d, k)
  • 説明

    この関数を呼び出して、ディクショナリ (d) から、キー (k) に対応する値 (v) を取得します。

  • パラメーター
    • d: ディクショナリの名前。
    • k: キー。 Data type : 任意の型。
  • 戻り値

    この関数は、成功した場合は対応する値を返し、失敗した場合は false を返します。

  • outer_keys=['e66fd4aa-f281-472f-b919-fc7e7474de25', '66fee78d-1887-42ec-9119-a9b50b7fbca2']
    say(concat('keys[1]=', get(outer_keys, 1)))
    say(concat('keys[2]=', get(outer_keys, 2)))
    
    inner_keys=[]
    set(inner_keys, 'dev', '243390eb-00b7-4551-a6b8-021bb34d1674')
    set(inner_keys, 'zeus', '4747d33b-12b0-45e6-ac10-a8e191d6adaa')
    
    def echo_each(k, v, u) {
        s = concat('keys[', k, ']=', v)
        say(s)
    }
    foreach(inner_keys, echo_each, [])
    
    Output:
    keys[1]=e66fd4aa-f281-472f-b919-fc7e7474de25
    keys[2]=66fee78d-1887-42ec-9119-a9b50b7fbca2
    keys[dev]=243390eb-00b7-4551-a6b8-021bb34d1674
    keys[zeus]=4747d33b-12b0-45e6-ac10-a8e191d6adaa                                                                                                                                              

foreach

この関数は、次のように記述されます。
  • 構文:foreach (d, f, user_data)
  • 説明
    • この関数を呼び出して、ディクショナリ (d) の要素をスキャンし、各要素に対してコールバック関数 (f)を実行します。
    • f(key, value, user_data)構文の f 構文のパラメーターを指定します。
    • f() 関数が false を返した場合、 foreach() ループは終了します。
  • パラメーター
    • d: ディクショナリの名前。
    • f: コールバック関数。
    • user_data: 送信するユーザーデータ。Data type: ディクショナリ。
  • 戻り値

    この関数は必ず true を返します。

    • 例 1
      outer_keys=['e66fd4aa-f281-472f-b919-fc7e7474de25', '66fee78d-1887-42ec-9119-a9b50b7fbca2']
      say(concat('keys[1]=', get(outer_keys, 1)))
      say(concat('keys[2]=', get(outer_keys, 2)))
      
      inner_keys=[]
      set(inner_keys, 'dev', '243390eb-00b7-4551-a6b8-021bb34d1674')
      set(inner_keys, 'zeus', '4747d33b-12b0-45e6-ac10-a8e191d6adaa')
      
      def echo_each(k, v, u) {
          s = concat('keys[', k, ']=', v)
          say(s)
      }
      foreach(inner_keys, echo_each, [])
      
      Output:
      keys[1]=e66fd4aa-f281-472f-b919-fc7e7474de25
      keys[2]=66fee78d-1887-42ec-9119-a9b50b7fbca2
      keys[dev]=243390eb-00b7-4551-a6b8-021bb34d1674
      keys[zeus]=4747d33b-12b0-45e6-ac10-a8e191d6adaa                                                                                                                                              
    • 例 2
      M3U8 スライスの最初の 2 件を出力し、foreach ループを終了します。
      def echo_each(k, v, u) {
          say(v)
      
          if match_re(v, '.*ts') {
              ts_cnt = get(u, 'ts_cnt')
              ts_cnt = add(ts_cnt, 1)
              set(u, 'ts_cnt', ts_cnt)
      
              if ge(ts_cnt, 2) {
                  return false
              }
          }
      }
      
      m3u8 = ''
      m3u8 = concat(m3u8, '#EXTM3U8', '\n')
      m3u8 = concat(m3u8, '#EXT-X-MEDIA-SEQUENCE:140651513\n')
      m3u8 = concat(m3u8, '#EXT-X-TARGETDURATION:10\n')
      m3u8 = concat(m3u8, '#EXTINF:8,\n')
      m3u8 = concat(m3u8, 'http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514_140651513.ts\n')
      m3u8 = concat(m3u8, '#EXTINF:9,\n')
      m3u8 = concat(m3u8, 'http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514_140651514.ts\n')
      m3u8 = concat(m3u8, '#EXTINF:10,\n')
      m3u8 = concat(m3u8, 'http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514_140651515.ts\n')
      
      lines = split(m3u8, '\n')
      u = []
      set(u, 'ts_cnt', 0)
      foreach(lines, echo_each, u)
      
      Output:
      #EXTM3U8
      #EXT-X-MEDIA-SEQUENCE:140651513
      #EXT-X-TARGETDURATION:10
      #EXTINF:8,
      http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514_140651513.ts
      #EXTINF:9,
      http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514_140651514.ts

insert

要素を辞書に挿入します。 この関数の詳細を次の表に示します。
項目 説明
構文 insert(list, value, [,pos])
パラメーター
  • list: 要素を挿入する辞書。
  • value: 挿入する要素。 値はすべてのデータ型をサポートします。
  • pos: 数値。 デフォルトでは、listパラメーターで指定された辞書のインデックスは1から始まります。 インデックスは0にできません。 valueパラメーターで指定された要素は、posパラメーターで指定された位置に挿入されます。 挿入された要素に続く要素は、1つの位置について辞書の終わりに向かって移動される。 posパラメーターを指定しない場合、要素は辞書の最後に挿入されます。
tbl_1 = []
挿入 (tbl_1、'1')
挿入 (tbl_1, '3')
インサート (tbl_1, '5')
挿入 (tbl_1, '2')
挿入 (tbl_1, '6', 1)
str = tbl_concat(tbl_1, '')
say(concat('insert:', str))
戻り値 この関数は常にtrueの値を返します。 Return value in this example:
挿入: 61352 

sort

ディクショナリ内の要素をデフォルトの順序で並べ替えます。 この関数の詳細を次の表に示します。
項目 説明
構文 sort(list[, comp])
機能 compパラメーターを指定する場合は、指定したディクショナリの2つの要素をパラメーターとしてサポートする関数である必要があります。 最初の要素が2番目の要素の前に配置されている場合、trueの値が返されます。 したがって、not comp(a, b) 関数の要素がソートされた後、trueの値が返されます。 compパラメーターを指定しない場合、要素はANSIIコードに基づいて昇順でソートされます。 しかしながら、このソートアルゴリズムは不安定であり、ANSIIテーブルにおいて同じランクを有する2つの要素の元の順序を変更する可能性がある。
パラメーター
  • list: 要素を並べ替える辞書。
  • comp: カスタムソートアルゴリズム。関数でなければなりません。
tbl_1 = []
挿入 (tbl_1、'1')
挿入 (tbl_1, '3')
インサート (tbl_1, '5')
挿入 (tbl_1, '2')
say(concat('remove:', remove(tbl_1, 2)))
str = tbl_concat(tbl_1, '')
say(concat('insert:', str))
ソート (tbl_1)
str = tbl_concat(tbl_1, '')
say(concat('sort:', str))
def my_comp(a, b){
  a = tonumber(a)
  b = tonumber(b)
  if gt(a, b) {
    trueを返す
  }
  falseを返します
}
ソート (tbl_1, my_comp)
str = tbl_concat(tbl_1, '')
say(concat('sort_comp:', str))
戻り値 この関数は常にtrueの値を返します。 この例の戻り値:
削除: 3
挿入: 152
並べ替え: 1235
sort_comp:521 

削除

ディクショナリ内の指定された位置から要素を削除し、削除された要素を返します。 posパラメーターを指定しない場合、辞書の末尾にある要素は削除されます。 この関数の詳細を次の表に示します。
項目 説明
構文 remove(list, [, pos])
パラメーター
  • list: 要素を削除する辞書。
  • pos: 数値。
tbl_1 = []
挿入 (tbl_1、'1')
挿入 (tbl_1, '3')
インサート (tbl_1, '5')
挿入 (tbl_1, '2')
say(concat('remove:', remove(tbl_1, 2)))
戻り値 指定された位置から削除された要素を返します。 この例の戻り値:
削除: 3