Home >XModules >

必要なシステム

ダウンロード

Version 1.7.1 -- 2017-05-09

古いバージョン

依存モジュール

XList

Iterator, Queue, Stack として使えるリストのラッパーオブジェクトを提供する AppleScript のモジュールです。

AppleScript のリストの欠けている機能の多くを補完します。

また、AppleScript のリストはリファレンスを経由して要素を参照しないと速度が大きく低下するという性質があります。XList は内部で、常にリファレンスを経由してリストにアクセスする為、常に良好な動作速度が得られます。

use XList : script "XList"

(* Iterator *)
set an_iterator to XList's make_with({"a", "b", "c"})

repeat while an_iterator's has_next()
set an_item to next() of an_iterator
log an_item
end repeat

(* Queue *)
set a_queue to make XList
a_queue's unshift("a")
a_queue's unshift("b")
log a_queue's shift() -- result : "b"
log a_queue's shift() -- result : "a"

(* Stack *)
set a_stack to make XList
a_queue's push("a")
a_queue's push("b")
log a_queue's pop() -- result : "b"
log a_queue's pop() -- result : "a"

(* Accessing list elements *)
set a_list to XList's make_with({"a", "b", "c"})
log a_list's item_counts() -- 3
log a_list's item_at(2) -- "b"
log a_list's has_item("b") --true
log a_list's has_item("d") --false
log a_list's index_of("b") -- 2
log a_list's index_of("d") -- 0
log a_list's delete_at(2) -- "b"
log (set_item of a_list for "e" at 2) -- "e"
log a_list's list_ref() -- {"a", "e"}

(* Conversion to Text *)
log a_list's as_unicode_with(", ") -- "a, e"

(* Accessing all items with a closure *)
script scriptA
on do(x, sender)
if x is "b" then
tell sender
set_item_at("d", current_index()) -- change an item of a list
end tell
end if
return true
end do
end script

an_iterator's enumerate(scriptA)
log an_iterator's all_items() -- result : {"a", "d", "c"}


script scriptB
on do(x)
return x & "a"
end do
end script

log an_iterator's map_as_list(scriptB) -- result : {"aa", "da", "ca"}

更新履歴

  • 1.7.1 -- 2017-05-09
    • ヘルプブック中の XText へのリンクが動作しない不具合を修正。
  • 1.7 -- 2016-10-18
    • OS X 10.9 で導入された AppleScript Libraries として使えるようにした。
    • ModuleLoader.osax への依存性を無くした。
    • OS X 10.9 以降が必要になった。
  • 1.6r2 -- 2014-10-01
    • HelpBook 中のサンプルコードのスクリプトリンクが機能しない不具合を修正。
  • 1.6 -- 2012-11-28
    • each, map, map_as_list はスクリプトオブジェクトの do ハンドラに要素への参照ではなく、要素そのものを渡すようにした。
      • AppleScriptObjC での不具合を回避する為です。
    • enumerate を追加。
    • set_item_at を追加。
  • 1.5 -- 2012-05-27
    • add_from_list を追加。
    • shallow_copy を追加。
    • deep_copy を追加。
    • iterator を追加。
  • 1.4.1 -- 2012-04-21
    • ヘルプをアップデート。
      • Mac OS X 10.6 で、"Edit Script" リンク、ハンドラのコピーリンクが動作しない不具合を修正。
    • item_at にインデックスのリストを与えることにより、複数の項目を取得できるようにした。
    • as_text_with を追加。
  • 1.4 -- 2010-01-29
    • ShowHelpBook への依存性を無くした。
    • items_in_range を追加。
    • count_items() でリストの長さを取得するのに、length of ではなく、count コマンドを使用するようにした。
    • ModuleLoader 2.1 以降が必要です。
  • 1.3 -- 2008-03-20
    • StringEngine への依存性をなくした。
  • 1.2.1 -- 2008.02.03
    • exchange_items() を追加。
  • 1.2 -- 2008.01.06
    • next() で次の要素が存在しないときは、missing value を返すのではなく、error number 1351 を発生させるようにした。
      • リストの要素として missing value を設定することも可能だからです。
  • 1.1.1 -- 2007.12.04
    • リファレンスマニュアルのエラーを修正
  • 1.1 -- 2007.07.10
    • 名前を SmartList から XList に変更
    • next_item を next に変更
    • make_with , make, make_with_text, count_items, set_item, index_of, current_index, has_item,as_xtext_with, as_unicode_with, as_string_with を追加
  • 1.0.2 -- 2007.06.01
    • map, each でリストの内容を変更できるようにした。
      • do ハンドラにはリストの要素へのリファレンスが渡されます。
  • 1.0.1 -- 2007.05.30
    • 英語ドキュメントを追加
    • reset() を追加
    • all_items() を追加
    • each() を追加
    • map() の仕様を変更
  • 1.0 -- 2007.05.23
    • First Release