XDict
連想配列のデータ構造を提供するAppleScript モジュールです。連想配列とはキー値に対応して値を設定した配列です。
連想配列は、record クラスにいくらか似ていますが、ラベルをスクリプトの実行中に新しく作ることができたり、変数で指定したりすることができるものと考えて大間違いないでしょう。
use XDict : script "XDict"
(* Make Instances *)
set empty_dict to make XDict
set a_dict to XDict's make_with_lists({"key1", "key2"}, {"value1", "value2"})
set a_dict to XDict's make_with_pairs({{"key1", "value1"}, {"key2", "value2"}})
(* obtain value *)
log a_dict's value_for_key("key1")
--result : "value1"
try
a_dict's value_for_key("key3")
on error number 900
log "No value associated with key3"
end try
(* Reverse Search *)
log a_dict's key_for_value("value2") -- result : "key2"
(* Non string values can be used as keys *)
script scriptA
end script
script scriptB
end script
a_dict's set_value(scriptA, "value3")
log a_dict's value_for_key(scriptA) --result : "value3"
try
a_dict's value_for_key(scriptB)
on error number 900
log "No value associated with scriptB"
end try
(* Iterator *)
set dict_iterator to a_dict's iterator()
repeat while dict_iterator's has_next()
set {a_key, a_value} to dict_iterator's next()
end repeat
(* Loop with a Script Object *)
script DictScanner
on do({a_key, a_value})
log a_key
log a_value
return true
end do
end script
a_dict's each(DictScanner)
script ValueExtractor
on do({a_key, a_value})
return a_value
end do
end script
set a_xlist to a_dict's map(ValueExtractor)
(* Dump the Contents for Debugging *)
log a_dict's remove_for_key(scriptA) -- result : true
a_dict's dump()
(* result :
"key1 -> value1
key2 -> value2
"
*)
更新履歴
- 1.7.2 -- 2020-01-27
- HelpBook.osax の代わりの OpenHelpBook.scptd を使うようにした。
- 1.7.1 -- 2017-08-07
- 「has_key」のパフォーマンスが悪い不具合を修正(広瀬さん、ありがとうございました)。
- 1.7 -- 2017-04-12
- OS X 10.9 で導入された AppleScript Libraries として使えるようにした。
- ModuleLoader.osax への依存性を無くした。
- OS X 10.9 以降が必要になった。
- ヘルプの更新。
- 1.6.2 -- 2015-09-04
-
- 内部コードの微修正。
- 1.6.1 -- 2012-05-10
- ヘルプをアップデート。
- レイアウトを小さいウインドウでの表示に適した物にした。
- 「Edit Script」「クリップボードアイコン」など、Mac OS X 10.6 で動作するようにした。
- ヘルプをアップデート。
- 1.6 -- 2010-02-15
- ShowHelpBook への依存性を無くした。
- ModuleLoader 2.1 以降が必要です。
- 1.5 -- 2008-12-04
- set_key_comparator(), key_comparator(), set_value_comparator(), value_comparator() を追加。
- 1.4 -- 2008-01-06
- value_for_key() で、key 値に対応する値が存在しなかったら、missing value を返すのではなく、error number 900 を発生させるようにした。
- 値として、missing value を設定してしまうことも可能だからです。
- value_for_key() で、key 値に対応する値が存在しなかったら、missing value を返すのではなく、error number 900 を発生させるようにした。
- 1.3 -- 2007-07-17
- KeyValueDictionary 改め XDict
- iterator, each, map, map_as_list, を追加
- 英語マニュアルを追加
- 1.2 -- 2007-03-01
- method 名をシンプルな物に変更
- AppleScriptDoc によってリファレンスマニュアルを生成
- 1.1 -- 2006-04-13
- バンドル形式にした
- バンドル内にマニュアルを配置し、HelpBook OSAX でヘルプビューアに表示するようにした。
- 1.0 -- 2005-08-18
- 長い長い、使用期間を経て初公開