AutoHotkeyで変数名を組み立てて変数の中身を取得するちょっと不思議な方法
StringTrimLeftのちょっと不思議な使い方を紹介。
使い方
使い方だけ書くと次の通り。
StringTrimLeft, 格納先変数名, アクセス先変数名をここで作る, 0
こうすることで、自分で作った変数名の中身にアクセスすることが出来ます。以下では、配列の末尾にアクセスする例を紹介します。
使用例:コンビネーションキーのpostfixキーを取得する
「a & b::Msgbox, % get_postfix_key()」を実行して「b」と表示される関数「get_postfix_key()」を作ります。
get_postfix_key()
簡単に作ると次のようになります。
get_postfix_key() { StringSplit, hotkey_array, A_ThisHotkey, %A_Space%&%A_Space% ; (1) StringTrimLeft, postfix_key, hotkey_array%hotkey_array0%, 0 ; (2) Return postfix_key ; (3) }
(1)で、トリガとなったホットキー(A_thisHotkey)を「 & 」で区切って配列「hotkey_array」に保存します。こうして、配列の0番目には配列の長さが、1番目にprefixキーが、2番目にpostfixキーが格納されるので、必要な2番目を取り出します。
配列から値を取り出す方法
ここで、2番目を取り出したいわけですが、AutoHotkeyでは、配列「hotkey_array」の2番目の要素は「hotkey_array2」にアクセスすることで取得します。つまり、変数名を作成してからアクセスする必要があります。そこで便利なのがStringTrimLeftで、(2)の行では、「hotkey_array%hotkey_array0%」によって、「hotkey_array2」という変数名を作成してから、その内容をpostfix_key変数へ丸ごとコピーしています。非常にトリッキーですが変数名を格納する変数をわざわざ作る必要が無くて便利です。
最後に、その内容をReturn文で返して完了です。
参考
- 流行らせるページ>リファレンス>StringTrimLeft/StringTrimRight
おすすめキーボード Realforce
プログラマ御用達キーボード PFU Happly Hacking Keyboard