すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:Dictionary 関数

最終更新日:Nov 01, 2024

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

set | get | foreach | del

set

項目説明
構文セット (d、k、v)
機能dパラメーターで指定されたディクショナリのキーと値のペアを設定します。
パラメーター
  • d: 辞書の名前。
  • k: キー。 データ型: 任意の型。
  • v: 値。 データ型: 任意の型。
戻り値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, [])                                                                                                                                     
    出力:
    キー [1]=e66fd4aa-f281-472f-b919-fc7e7474de25
    キー [2]=66fee78d-1887-42ec-9119-a9b50b7fbca2
    キー [dev]=243390eb-00b7-4551-a6b8-021bb34d1674
    キー [ゼウス]=4747d33b-12b0-45e6-ac10-a8e191d6adaa 
  • 例 2
    d_inner = []
    set(d_inner, 'name', 'inner ascript')
    
    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)
        }
    }
    出力:
    X-DSL-NESTED-DICT: inner dsl

get

項目説明
構文get(d, k)
機能指定したキーの値をディクショナリから取得します。
パラメーター
  • d: 辞書の名前。
  • k: キー。 データ型: 任意の型。
戻り値関数が成功すると、指定されたキーの値が返されます。 それ以外の場合、falseが返されます。
  • 例 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, [])                                                                                                                                     
    出力:
    キー [1]=e66fd4aa-f281-472f-b919-fc7e7474de25
    キー [2]=66fee78d-1887-42ec-9119-a9b50b7fbca2
    キー [dev]=243390eb-00b7-4551-a6b8-021bb34d1674
    キー [ゼウス]=4747d33b-12b0-45e6-ac10-a8e191d6adaa 
  • 例 2
    d_inner = []
    set(d_inner, 'name', 'inner ascript')
    
    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)
        }
    }
    出力:
    X-DSL-NESTED-DICT: inner dsl

foreach

項目説明
構文foreach(d, f, user_data)
機能
  • この関数は、ディクショナリ (d) 内の要素をトラバースし、要素ごとにコールバック関数 (f) を呼び出します。
  • f(key, value, user_data) の構文でfパラメーターを設定します。
  • f() 関数がfalseを返すと、foreach() ループが終了します。
パラメーター
  • d: 辞書の名前。
  • f: コールバック関数。
  • user_data: 送信するユーザーデータ。 データ型: dictionary。
戻り値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, [])                                                                                                                                     
    出力:
    キー [1]=e66fd4aa-f281-472f-b919-fc7e7474de25
    キー [2]=66fee78d-1887-42ec-9119-a9b50b7fbca2
    キー [dev]=243390eb-00b7-4551-a6b8-021bb34d1674
    キー [ゼウス]=4747d33b-12b0-45e6-ac10-a8e191d6adaa 
  • 例2: 最初の2つのM3U8スライスを印刷し、foreachループを終了します。
    def echo_each(k, v, u) {
        say(v)
    
        if match(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) {
                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 (ライン、echo_each、u)
    出力:
    # 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

del

項目説明
構文del(d, k)
機能キーと値のペアを辞書から削除します。
パラメーター
  • d: 辞書の名前。
  • k: キー。 データ型: 任意の型。
var_a = []
set(var_a、'note_a' 、'note a info')
if get(var_a, 'note_a') {
    add_rsp_header('X-RESPOND-OUTPUT '、'found var_a key' 、true)
} else {
    add_rsp_header('X-RESPOND-OUTPUT ', 'del var_a key', true)
}
del(var_a, 'note_a')
if get(var_a, 'note_a') {
    add_rsp_header('X-RESPOND-OUTPUT '、'found var_a key' 、true)
} else {
    add_rsp_header('X-RESPOND-OUTPUT ', 'del var_a key', true)
}
戻り値trueの値が返されます。 この例では、次の値が返されます。
X-RESPOND-OUTPUT: var_aキーが見つかりました
X-RESPOND-OUTPUT: del var_aキー