Возвращает true, если применение функции fn к каждому элементу таблицы дает true.
Параметры
table - Таблица, содержащая данные
fn - Функция, принимающая один параметр и возвращающая значение "true" (любое значение, кроме булева значения false или nil), если параметр был принят, или значение "false" (булевое значение false или nil), если параметр был отклонен.
Возвращает
True, если применение функции fn ко всем элементам таблицы дает true
False, если функция возвращает false для любого элемента таблицы. Обратите внимание, что проверка прекращается при обнаружении первого возвращаемого значения false.
Фильтровать таблицу, применяя предикатную функцию к её элементам (в произвольном порядке)
Параметры
table - Таблица; может содержать как список (или массив), так и хеш-таблицу (или словарь)
fn - Функция, принимающая один параметр (элемент таблицы) и возвращающая булевое значение: true, если параметр должен быть сохранён, false, если он должен быть отброшен
Возвращает
Таблица, содержащая элементы таблицы, для которых fn(элемент) возвращает true
Примечания
Если table - это чистая массивная таблица (подобная списку) без "дыр", используйте hs.fnutils.ifilter() для гарантированного порядка и лучшей производительности
Фильтровать таблицу-список, применяя предикатную функцию к её элементам в порядке
Параметры
list - Таблица-список, т.е. таблица, ключи которой являются последовательными целыми числами, начиная с 1
fn - Функция, принимающая один параметр (элемент таблицы) и возвращающая булевое значение: true, если параметр должен быть сохранён, false, если он должен быть отброшен
Возвращает
Таблица-список, содержащая элементы таблицы, для которых fn(элемент) возвращает true
Примечания
Если list содержит "дыры", все элементы после первой "дыры" будут потеряны, так как таблица перебирается с ipairs; используйте hs.fnutils.map() если ваша таблица содержит "дыры"
Выполнить функцию над элементами таблицы-списка в порядке, и собрать результаты
Параметры
list - Таблица-список, т.е. таблица, ключи которой являются последовательными целыми числами, начиная с 1
fn - Функция, принимающая один параметр (элемент таблицы). Возвращаемые значения из этой функции будут собраны в результирующий список; когда nil возвращается, соответствующий элемент отбрасывается - результирующий список не будет иметь "дыр".
Возвращает
Таблица-список, содержащая результаты вызова функции над каждым элементом в таблице
Примечания
Если list содержит "дыры", все элементы после первой "дыры" будут потеряны, так как таблица перебирается с ipairs; используйте hs.fnutils.map() если ваша таблица содержит "дыры"
Выполнить функцию над таблицей (в произвольном порядке) и собрать результаты
Parameters
table - Таблица; она может содержать как список (или массив), так и хеш (или словарь)
fn - Функция, принимающая один параметр (элемент таблицы). Для хеш-части возвращаемые значения этой функции (если не nil) будут назначены тому же ключу в результирующем списке. Для массива эта функция ведет себя как hs.fnutils.imap() (т.е. nil результаты игнорируются); однако все ключи, включая целочисленные ключи после «дыры» в table, будут перебираться.
Returns
Таблица, содержащая результаты вызова функции для каждого элемента в таблице
Notes
Если table является чистым массивом (списком) без «дыр», используйте hs.fnutils.imap() если вам нужна гарантированная обработка в порядке следования и для лучшей производительности.
Первый итерационный вызов редуктора выполнится с первым и вторым элементами таблицы. Второй итерационный вызов выполнится с результатом первого итерационного вызова и третьим элементом. Это повторяется до тех пор, пока не останется только один элемент
Возвращает true, если применение fn к элементам в таблице дает true хотя бы для одного члена.
Parameters
table - Таблица, содержащая данные
fn - Функция, принимающая один параметр и возвращающая «истинное» значение (любое значение, кроме логического false или nil), если параметр был принят, или «ложное» значение (логическое false или nil), если параметр был отклонен.
Returns
True, если применение fn к любому элементу таблицы дает true. Обратите внимание, что проверка прекращается при обнаружении первого true возврата.
False, если функция возвращает false для всех элементов таблицы.
Преобразовать строку в массив строк, разбивая по указанному разделителю.
Parameters
sString -- строка для разделения на подстроки
sSeparator -- разделитель. Если bPlain равно false или не указано, это рассматривается как Lua-шаблон.
nMax -- необязательный параметр, определяющий максимальное количество (или все, если nMax равно nil) подстрок для разделения из sString.
bPlain -- необязательный логический параметр, по умолчанию false, определяющий, должен ли sSeparator рассматриваться как обычный текст (true) или Lua-шаблон (false)
Returns
Массив подстрок. Последний элемент массива будет оставшейся частью sString после nMax (или всех, если nMax не указано или равно nil) подстрок были идентифицированы.
Notes
Аналогично "split" в Perl или "string.split" в Python.
Необязательные параметры nMax и bPlain идентифицируются по типу - если параметр 3 или 4 является числом или nil, он будет рассматриваться как значение для nMax; если параметр 3 или 4 является логическим значением, он будет рассматриваться как значение для bPlain.
Lua-шаблоны более гибкие для сопоставления с шаблоном, но также могут быть медленнее, если точка разделения проста. См. §6.4.1 в Lua_Reference_Manual по адресу http://www.lua.org/manual/5.3/manual.html#6.4.1 для получения дополнительной информации о Lua-шаблонах.
Возвращает новую функцию, которая принимает предоставленные аргументы и предварительно применяет их как начальные аргументы к предоставленной функции. Когда новая функция вызывается позже с дополнительными аргументами, они добавляются в конец начального списка, и весь список аргументов передается в предоставленную функцию, и ее результат возвращается.
Parameters
fn - Функция, которая будет действовать на все предоставленные аргументы сейчас и когда результат вызывается позже.
... - Начальные аргументы для предварительной применения к результирующей новой функции.
Returns
Функция
Notes
Это лучше всего понять на примере, который вы можете протестировать в консоли Hammerspoon:
Создайте функцию a, у которой ее начальные аргументы установлены на 1,2,3: a = hs.fnutils.partial(function(...) return table.pack(...) end, 1, 2, 3)
Теперь несколько примеров использования новой функции, a(...): hs.inspect(a("a","b","c")) вернет: { 1, 2, 3, "a", "b", "c", n = 6 } hs.inspect(a(4,5,6,7)) вернет: { 1, 2, 3, 4, 5, 6, 7, n = 7 } hs.inspect(a(1)) вернет: { 1, 2, 3, 1, n = 4 }
hs.fnutils.sortByKeys(table[ , function]) -> function
Type
Конструктор
Description
Итератор для извлечения элементов из таблицы пар ключ-значение в порядке ключей.
Parameters
table - таблица пар ключ-значение, по которой будет происходить итерирование
fn - необязательная функция, которая будет передана в table.sort, чтобы определить, как сортируются ключи. Если она отсутствует, ключи будут отсортированы по порядку (числовому/алфавитному).
Returns
функция, используемая в качестве итератора
Notes
Аналогично sort(keys %hash) в Perl
Итераторы используются в циклических конструкциях, таких как for:
for i,v in hs.fnutils.sortByKeys(t[, f]) do ... end
Функция сортировки должна принимать два аргумента и возвращать true, если первый аргумент должен предшествовать второму, или false в противном случае.
Например, function(m,n) return not (m < n) end приведет к обратной алфавитной сортировке.
См. Programming_In_Lua,_3rd_ed, страница 52 для более подробного обсуждения.
По умолчанию сортировка сравнивает ключи напрямую, если они одного типа, или как их строковые представления (tostring()), если типы ключей отличаются:
function(m,n) if type(m) ~= type(n) then return tostring(m) < tostring(n) else return m < n end
hs.fnutils.sortByKeyValues(table[ , function]) -> function
Type
Конструктор
Description
Итератор для извлечения элементов из таблицы пар ключ-значение в порядке значений.
Parameters
table - таблица пар ключ-значение, по которой будет происходить итерирование
fn - необязательная функция, которая будет передана в table.sort, чтобы определить, как сортируются значения. Если она отсутствует, значения будут отсортированы по порядку (числовому/алфавитному).
Итераторы используются в циклических конструкциях, таких как for:
for i,v in hs.fnutils.sortByKeyValues(t[, f]) do ... end
Функция сортировки должна принимать два аргумента и возвращать true, если первый аргумент должен предшествовать второму, или false в противном случае.
Например, function(m,n) return not (m < n) end приведет к обратной алфавитной сортировке.
См. Programming_In_Lua,_3rd_ed, страница 52 для более подробного обсуждения.
По умолчанию сортировка сравнивает значения напрямую, если они одного типа, или как их строковые представления (tostring()), если типы значений отличаются:
function(m,n) if type(m) ~= type(n) then return tostring(m) < tostring(n) else return m < n end