hmLNの応用のAPI

概要

hmLN自体が備えている残りのAPIは9つです。

全ては「リスト」と「ディクショナリ」の値の取得・設定に関するものとなります。

似たような関数ですが、概念としてはたった1しかありません。

変数名 [ キー名 ]

このような添え字でアクセスできるオブジェクトの値を「取得」「設定」する関数です。

これらは無理に覚える必要はありませんが、

#_ = dllfunc( #MNG, "DoString", "aaa = {1,2,3,4,5,6}" );  // 配列を定義
#_ = dllfunc( #MNG, "SetNumVar", "tmpnum", 100 ); // 一旦tmpnumというグローバル変数に値を設定
#_ = dllfunc( #MNG, "DoString", "aaa[3] = tmpstr" ); // aaa[3]に値を設定

と記述するところを

#_ = dllfunc( #MNG, "DoString", "aaa = {1,2,3,4,5,6}" );  // 配列を定義

// aaaの添え字[3]に100を代入
#_ = dllfunc( #MNG, "SetNumItemOfList", "aaa", 3, 100 );

と記述できるということになります。
知っておくと記述が少し楽になるでしょう。

以下のListやDict系の関数はhmPyと同じ名前の関数となります。

リストにアクセスする4つの関数(***OfList)

厳密には「リスト」だけではなく、「タプル」や「独自に自分で定義したオブジェクト」も含め、
「整数の添え字」でアクセス可能なモノ」全てが含まれます。

  • 「添え字は整数タイプ」・「アイテムは数値の値」を得る:
     └ GetNumItemOfList(list_name, index)

    aaa[3] の値を得るといった場合です。aaa[3]の中身が数値タイプだとわかっている場合に利用します。


  • 「添え字は整数タイプ」・「アイテムは数値の値」を設定:
     └ SetNumItemOfList(list_name, index, value)

    aaa[3] = 10 のように値を設定したいといった場合です。


  • 「添え字は整数タイプ」・「アイテムは文字列」として得る:
     └ GetStrItemOfList(list_name, index)

    aaa[3] の値を得るといった場合です。aaa[3]の中身を「文字列」に変換して取得する場合に利用します。


  • 「添え字は整数タイプ」・「アイテムは文字列の値」を設定:
     └ SetStrItemOfList(list_name, index, value)

    aaa[3] = "aaa" のように文字列の値を設定したいといった場合です。


ディクショナリにアクセスする4つの関数(***OfDict)

厳密には「ディクショナリ」だけではなく、「独自に自分で定義したオブジェクト」も含め、
「文字列の添え字」でアクセス可能なモノ」全てが含まれます。

  • 「添え字は文字列タイプ」・「アイテムは数値の値」を得る:
     └ GetNumItemOfDict(list_name, key)

    aaa["prop"] の値を得るといった場合です。aaa["prop"]の中身が数値タイプだとわかっている場合に利用します。


  • 「添え字は文字列タイプ」・「アイテムは数値の値」を設定:
     └ SetNumItemOfDict(list_name, key, value)

    aaa["prop"] = 10 のように値を設定したいといった場合です。


  • 「添え字は文字列タイプ」・「アイテムは文字列」として得る:
     └ GetStrItemOfDict(list_name, key)

    aaa["prop"] の値を得るといった場合です。aaa["prop"]の中身を「文字列」に変換して取得する場合に利用します。


  • 「添え字は文字列タイプ」・「アイテムは文字列の値」を設定:
     └ SetStrItemOfDict(list_name, key, value)

    aaa["prop"] = "aaa" のように文字列の値を設定したいといった場合です。


DestroyScope関数

hmLN内に「DestroyScope」という名前の関数を用意しておくと、
マクロ終了時に自動的にその関数が実行されます。

function DestroyScope()
    hm.debuginfo("DestroyScope")
end