Могу ли я получить определенное свойство каждого элемента коллекции, используя только спецификаторы объекта? - PullRequest
2 голосов
/ 30 марта 2012

Скажи, у меня есть коллекция.Могу ли я получить список значений для определенного свойства элементов коллекции, используя только спецификаторы объекта (например, без оператор цикла )?Если так, то как?Например, возьмем список записей:

set stuff to {{foo:"bar"}, {foo:"baz"}, {foo:"bam"}}

. Для этого примера результатом должен быть список значений свойства foo:

{"bar", "baz", "bam"}

. Чтобы проиллюстрировать, чтоЯ имею в виду «только спецификаторы объекта», оператор для генерации этого списка должен выглядеть примерно так:

foo of each item of stuff

, за исключением того, что нет такой вещи, как each справочная форма.Ответы, использующие repeat, не получают баллов.Ответ «Нет, вы не можете этого сделать», если он содержит достаточные доказательства, вполне приемлем.

1 Ответ

4 голосов
/ 30 марта 2012

Форма ссылки фильтра определяет только объекты приложения и не может использоваться с обычными объектами AppleScript, такими как списки или записи, поэтому вам придется использовать приложение для фильтрации одного из его объектов.Например,

tell application "System Events" to return value of every property list item of property list items of (make new property list item with properties {value:stuff}) whose name is "foo"

Альтернативой может быть использование AppleScriptObjC (через что-то вроде апплета Cocoa-AppleScript или ASObjC Runner ), где вы можете использовать NSArray valueForKey: метод, например

set stuff to current application's NSArray's arrayWithArray_({{foo:"bar"}, {foo:"baz"}, {foo:"bam"}})
stuff's valueForKey_("foo") as list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...