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

CDN:ディクショナリ関数

最終更新日:Aug 25, 2026

このトピックでは、ディクショナリ関数の構文、説明、パラメーター、レスポンスパラメーターについて説明します。また、これらの関数の例も示します。

set

set 関数を使用して、ディクショナリにキーと値のペアを追加または更新します。

項目

説明

構文

set(d, k, v)

パラメーター

  • d:ターゲットディクショナリ。

  • k:追加または更新するキー。データ型:任意。

  • v:キーに関連付ける値。データ型:任意。

  • 例 1

    outer_keys=['e66fd4aa-f281-472f-b919-fc7e7474****', '66fee78d-1887-42ec-9119-a9b50b7f****']
    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-021bb34d****')
    set(inner_keys, 'zeus', '4747d33b-12b0-45e6-ac10-a8e191d6****')
    
    def echo_each(k, v, u) {
        s = concat('keys[', k, ']=', v)
        say(s)
    }
    foreach(inner_keys, echo_each, [])                                                                                                                                             
  • 例 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)
        }
    }

戻り値

この関数は常に true を返します。例では、次の出力が生成されます。

  • 例 1 の出力:

    keys[1]=e66fd4aa-f281-472f-b919-fc7e7474****
    keys[2]=66fee78d-1887-42ec-9119-a9b50b7f****
    keys[dev]=243390eb-00b7-4551-a6b8-021bb34d****
    keys[zeus]=4747d33b-12b0-45e6-ac10-a8e191d6****
  • 例 2 では、次のレスポンスヘッダーが追加されます。

    X-DSL-NESTED-DICT: inner dsl

get

get 関数を使用して、ディクショナリから指定されたキーに関連付けられた値を取得します。

項目

説明

構文

get(d, k)

パラメーター

  • d:ターゲットディクショナリ。

  • k:取得する値のキー。データ型:任意。

outer_keys=['e66fd4aa-f281-472f-b919-fc7e7474****', '66fee78d-1887-42ec-9119-a9b50b7f****']
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-021bb34d****')
set(inner_keys, 'zeus', '4747d33b-12b0-45e6-ac10-a8e191d6****')

def echo_each(k, v, u) {
    s = concat('keys[', k, ']=', v)
    say(s)
}
foreach(inner_keys, echo_each, [])                                                                                                                                             

戻り値

キーが存在する場合、関数は対応する値を返します。それ以外の場合は、false を返します。この例では、次の出力が生成されます。

keys[1]=e66fd4aa-f281-472f-b919-fc7e7474****
keys[2]=66fee78d-1887-42ec-9119-a9b50b7f****
keys[dev]=243390eb-00b7-4551-a6b8-021bb34d****
keys[zeus]=4747d33b-12b0-45e6-ac10-a8e191d6****

foreach

foreach 関数の動作は次のとおりです。

  • ディクショナリ d 内の各キーと値のペアを反復処理し、コールバック関数 f を実行します。

  • コールバック関数 f は、シグネチャ f(key, value, user_data) を持つ必要があります。

  • foreach() ループは、f() コールバック関数が false を返した場合に終了します。

項目

説明

構文

foreach(d, f, user_data)

パラメーター

  • d:ターゲットディクショナリ。

  • f:各キーと値のペアに対して実行するコールバック関数。

  • user_data:コールバック関数に渡すカスタムユーザーデータ。このパラメーターはディクショナリである必要があります。

  • 例 1

    outer_keys=['e66fd4aa-f281-472f-b919-fc7e7474****', '66fee78d-1887-42ec-9119-a9b50b7f****']
    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-021bb34d****')
    set(inner_keys, 'zeus', '4747d33b-12b0-45e6-ac10-a8e191d6****')
    
    def echo_each(k, v, u) {
        s = concat('keys[', k, ']=', v)
        say(s)
    }
    foreach(inner_keys, echo_each, [])                                                                                                                                             
  • 例 2

    この例では、最初の 2 つの M3U8 セグメントを出力し、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:14065****\n')
    m3u8 = concat(m3u8, '#EXT-X-TARGETDURATION:10\n')
    m3u8 = concat(m3u8, '#EXTINF:8,\n')
    m3u8 = concat(m3u8, 'http://***.cn/cache/289_/seg0/index140651514_1406****.ts\n')
    m3u8 = concat(m3u8, '#EXTINF:9,\n')
    m3u8 = concat(m3u8, 'http://***.cn/cache/289_/seg0/index140651514_1406****.ts\n')
    m3u8 = concat(m3u8, '#EXTINF:10,\n')
    m3u8 = concat(m3u8, 'http://***.cn/cache/289_/seg0/index140651514_1406****.ts\n')
    
    lines = split(m3u8, '\n')
    u = []
    set(u, 'ts_cnt', 0)
    foreach(lines, echo_each, u)

戻り値

この関数は常に true を返します。例では、次の出力が生成されます。

  • 例 1 の出力:

    keys[1]=e66fd4aa-f281-472f-b919-fc7e7474****
    keys[2]=66fee78d-1887-42ec-9119-a9b50b7f****
    keys[dev]=243390eb-00b7-4551-a6b8-021bb34d****
    keys[zeus]=4747d33b-12b0-45e6-ac10-a8e191d6****
  • 例 2 の出力:

    #EXTM3U8
    #EXT-X-MEDIA-SEQUENCE:140651513
    #EXT-X-TARGETDURATION:10
    #EXTINF:8,
    http://***.cn/cache/289_/seg0/index140651514_1406****.ts
    #EXTINF:9,
    http://***.cn/cache/289_/seg0/index140651514_1406****.ts

del

ディクショナリ (d) からキーと値のペアを削除します。次の表に、この関数の詳細を示します。

項目

説明

構文

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: found var_a key
X-RESPOND-OUTPUT: del var_a key