Spec-Zone.ru › Hammerspoon

hs.fnutils

Утилитарные функции функционального программирования

Обзор API

  • Функции - API-вызовы, предоставляемые непосредственно расширением
    • concat
    • contains
    • copy
    • each
    • every
    • filter
    • find
    • ieach
    • ifilter
    • imap
    • indexOf
    • map
    • mapCat
    • reduce
    • some
    • split
  • Конструкторы - API-вызовы, возвращающие объект, обычно предоставляющий API-методы
    • cycle
    • partial
    • sequence
    • sortByKeys
    • sortByKeyValues

Документация API

Функции

concat
Подпись hs.fnutils.concat(table1, table2)
Тип Функция
Описание

Объединить две таблицы

Параметры
  • table1 - Таблица, содержащая данные
  • table2 - Таблица, содержащая данные
Возвращает
  • table1, со всеми элементами table2, добавленными в конец
Примечания
  • table2 не может быть разреженной таблицей, см. http://www.luafaq.org/gotchas.html#T6.4
Исходный код extensions/fnutils/fnutils.lua строка 190
contains
Подпись hs.fnutils.contains(table, element) -> bool
Тип Функция
Описание

Определить, содержит ли таблица заданный объект

Параметры
  • table - Таблица, содержащая данные
  • element - Объект для поиска в таблице
Возвращает
  • Булево значение, true, если элемент найден в таблице, иначе false
Исходный код extensions/fnutils/fnutils.lua строка 152
copy
Подпись hs.fnutils.copy(table) -> table
Тип Функция
Описание

Копировать таблицу, используя pairs()

Параметры
  • table - Таблица, содержащая данные
Возвращает
  • Новая таблица, содержащая те же данные, что и входная таблица
Исходный код extensions/fnutils/fnutils.lua строка 135
each
Подпись hs.fnutils.each(table, fn)
Тип Функция
Описание

Выполнить функцию над элементами таблицы (в произвольном порядке), и игнорировать результаты

Параметры
  • table - Таблица; может содержать как список (или массив), так и хеш-таблицу (или словарь)
  • fn - Функция, принимающая один параметр (элемент таблицы)
Возвращает
  • None
Исходный код extensions/fnutils/fnutils.lua строка 76
every
Подпись hs.fnutils.every(table, fn) -> bool
Тип Функция
Описание

Возвращает true, если применение функции fn к каждому элементу таблицы дает true.

Параметры
  • table - Таблица, содержащая данные
  • fn - Функция, принимающая один параметр и возвращающая значение "true" (любое значение, кроме булева значения false или nil), если параметр был принят, или значение "false" (булевое значение false или nil), если параметр был отклонен.
Возвращает
  • True, если применение функции fn ко всем элементам таблицы дает true
  • False, если функция возвращает false для любого элемента таблицы. Обратите внимание, что проверка прекращается при обнаружении первого возвращаемого значения false.
Исходный код extensions/fnutils/fnutils.lua строка 356
filter
Подпись hs.fnutils.filter(table, fn) -> table
Тип Функция
Описание

Фильтровать таблицу, применяя предикатную функцию к её элементам (в произвольном порядке)

Параметры
  • table - Таблица; может содержать как список (или массив), так и хеш-таблицу (или словарь)
  • fn - Функция, принимающая один параметр (элемент таблицы) и возвращающая булевое значение: true, если параметр должен быть сохранён, false, если он должен быть отброшен
Возвращает
  • Таблица, содержащая элементы таблицы, для которых fn(элемент) возвращает true
Примечания
  • Если table - это чистая массивная таблица (подобная списку) без "дыр", используйте hs.fnutils.ifilter() для гарантированного порядка и лучшей производительности

обработки и для лучшей производительности.

Исходный код extensions/fnutils/fnutils.lua строка 112
find
Подпись hs.fnutils.find(table, fn) -> element
Тип Функция
Описание

Выполнить функцию над элементами таблицы и вернуть первый элемент, для которого эта функция возвращает true

Параметры
  • table - Таблица, содержащая данные
  • fn - Функция, принимающая один параметр и возвращающая булевое значение
Возвращает
  • Элемент предоставленной таблицы, который первым вызвал возвращение true от fn
Исходный код extensions/fnutils/fnutils.lua строка 261
ieach
Подпись hs.fnutils.ieach(list, fn)
Тип Функция
Описание

Выполнить функцию над элементами таблицы-списка в порядке, и игнорировать результаты

Параметры
  • list - Таблица-список, т.е. таблица, ключи которой являются последовательными целыми числами, начиная с 1
  • fn - Функция, принимающая один параметр (элемент таблицы)
Возвращает
  • None
Исходный код extensions/fnutils/fnutils.lua строка 62
ifilter
Подпись hs.fnutils.ifilter(list, fn) -> list
Тип Функция
Описание

Фильтровать таблицу-список, применяя предикатную функцию к её элементам в порядке

Параметры
  • list - Таблица-список, т.е. таблица, ключи которой являются последовательными целыми числами, начиная с 1
  • fn - Функция, принимающая один параметр (элемент таблицы) и возвращающая булевое значение: true, если параметр должен быть сохранён, false, если он должен быть отброшен
Возвращает
  • Таблица-список, содержащая элементы таблицы, для которых fn(элемент) возвращает true
Примечания
  • Если list содержит "дыры", все элементы после первой "дыры" будут потеряны, так как таблица перебирается с ipairs; используйте hs.fnutils.map() если ваша таблица содержит "дыры"
Исходный код extensions/fnutils/fnutils.lua строка 91
imap
Подпись hs.fnutils.imap(list, fn) -> list
Тип Функция
Описание

Выполнить функцию над элементами таблицы-списка в порядке, и собрать результаты

Параметры
  • list - Таблица-список, т.е. таблица, ключи которой являются последовательными целыми числами, начиная с 1
  • fn - Функция, принимающая один параметр (элемент таблицы). Возвращаемые значения из этой функции будут собраны в результирующий список; когда nil возвращается, соответствующий элемент отбрасывается - результирующий список не будет иметь "дыр".
Возвращает
  • Таблица-список, содержащая результаты вызова функции над каждым элементом в таблице
Примечания
  • Если list содержит "дыры", все элементы после первой "дыры" будут потеряны, так как таблица перебирается с ipairs; используйте hs.fnutils.map() если ваша таблица содержит "дыры"
Исходный код extensions/fnutils/fnutils.lua строка 10
indexOf
Подпись hs.fnutils.indexOf(table, element) -> number or nil
Тип Функция
Описание

Определить местоположение заданного объекта в таблице

Параметры
  • table - Таблица, содержащая данные
  • element - Объект для поиска в таблице
Возвращает
  • Число, содержащее индекс элемента в таблице, или nil, если элемент не найден
Исходный код extensions/fnutils/fnutils.lua строка 171
END_OF_DOCUMENT_MARKER
map
Signature hs.fnutils.map(table, fn) -> table
Type Function
Description

Выполнить функцию над таблицей (в произвольном порядке) и собрать результаты

Parameters
  • table - Таблица; она может содержать как список (или массив), так и хеш (или словарь)
  • fn - Функция, принимающая один параметр (элемент таблицы). Для хеш-части возвращаемые значения этой функции (если не nil) будут назначены тому же ключу в результирующем списке. Для массива эта функция ведет себя как hs.fnutils.imap() (т.е. nil результаты игнорируются); однако все ключи, включая целочисленные ключи после «дыры» в table, будут перебираться.
Returns
  • Таблица, содержащая результаты вызова функции для каждого элемента в таблице
Notes
  • Если table является чистым массивом (списком) без «дыр», используйте hs.fnutils.imap() если вам нужна гарантированная обработка в порядке следования и для лучшей производительности.

обработки и для лучшей производительности.

Source extensions/fnutils/fnutils.lua строка 37
mapCat
Signature hs.fnutils.mapCat(table, fn) -> table
Type Function
Description

Выполнить функцию над таблицей, которая возвращает таблицы, и конкатенировать все эти таблицы

Parameters
  • table - Таблица, содержащая данные
  • fn - Функция, которая принимает один параметр и возвращает таблицу
Returns
  • Таблица, содержащая конкатенированные результаты вызова fn(элемент) для каждого элемента в предоставленной таблице
Source extensions/fnutils/fnutils.lua строка 210
reduce
Signature hs.fnutils.reduce(table, fn[, initial]) -> table
Type Function
Description

Свести таблицу к одному элементу с помощью функции

Parameters
  • table - Таблица, содержащая данные
  • fn - Функция, принимающая два параметра, которые будут элементами предоставленной таблицы. Она должна выбрать один из этих элементов и вернуть его
  • initial - Если указано, первый вызов fn будет с этим значением и первым элементом таблицы
Returns
  • Элемент предоставленной таблицы, выбранный итеративной функцией редуктора
Notes
  • table не может быть разреженной таблицей, см. http://www.luafaq.org/gotchas.html#T6.4
  • Первый итерационный вызов редуктора выполнится с первым и вторым элементами таблицы. Второй итерационный вызов выполнится с результатом первого итерационного вызова и третьим элементом. Это повторяется до тех пор, пока не останется только один элемент
Source extensions/fnutils/fnutils.lua строка 228
some
Signature hs.fnutils.some(table, fn) -> bool
Type Function
Description

Возвращает true, если применение fn к элементам в таблице дает true хотя бы для одного члена.

Parameters
  • table - Таблица, содержащая данные
  • fn - Функция, принимающая один параметр и возвращающая «истинное» значение (любое значение, кроме логического false или nil), если параметр был принят, или «ложное» значение (логическое false или nil), если параметр был отклонен.
Returns
  • True, если применение fn к любому элементу таблицы дает true. Обратите внимание, что проверка прекращается при обнаружении первого true возврата.
  • False, если функция возвращает false для всех элементов таблицы.
Source extensions/fnutils/fnutils.lua строка 374
split
Signature hs.fnutils.split(sString, sSeparator [, nMax] [, bPlain]) -> { array }
Type Function
Description

Преобразовать строку в массив строк, разбивая по указанному разделителю.

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-шаблонах.
Source extensions/fnutils/fnutils.lua строка 472

Конструкторы

cycle
Signature hs.fnutils.cycle(table) -> fn()
Type Конструктор
Description

Создает функцию, которая повторяет итерацию по таблице

Parameters
  • table - Таблица, содержащая данные
Returns
  • Функция, которая при повторном вызове будет возвращать все элементы предоставленной таблицы, повторяясь бесконечно
Notes
  • table не может быть разреженной таблицей, см. http://www.luafaq.org/gotchas.html#T6.4
  • Пример использования:
    f = cycle({4, 5, 6})
    {f(), f(), f(), f(), f(), f(), f()} == {4, 5, 6, 4, 5, 6, 4}
    
Source extensions/fnutils/fnutils.lua строка 330
partial
Signature hs.fnutils.partial(fn, ...) -> fn'
Type Конструктор
Description

Возвращает новую функцию, которая принимает предоставленные аргументы и предварительно применяет их как начальные аргументы к предоставленной функции. Когда новая функция вызывается позже с дополнительными аргументами, они добавляются в конец начального списка, и весь список аргументов передается в предоставленную функцию, и ее результат возвращается.

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 }

Source extensions/fnutils/fnutils.lua строка 298
sequence
Signature hs.fnutils.sequence(...) -> fn
Type Конструктор
Description

Создает функцию, которая соберет результаты серии функций в таблицу

Parameters
  • ... - Несколько функций, передаваемых в качестве различных аргументов. Они должны принимать нулевые параметры и возвращать что-то
Returns
  • Функция, которая при вызове будет вызывать все функции, переданные в этот конструктор. Выходные данные этих функций будут собраны вместе и возвращены.
Source extensions/fnutils/fnutils.lua строка 278
END_OF_DOCUMENT_MARKER
sortByKeys
Signature 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
Source extensions/fnutils/fnutils.lua строка 392
sortByKeyValues
Signature hs.fnutils.sortByKeyValues(table[ , function]) -> function
Type Конструктор
Description

Итератор для извлечения элементов из таблицы пар ключ-значение в порядке значений.

Parameters
  • table - таблица пар ключ-значение, по которой будет происходить итерирование
  • fn - необязательная функция, которая будет передана в table.sort, чтобы определить, как сортируются значения. Если она отсутствует, значения будут отсортированы по порядку (числовому/алфавитному).
Returns
  • функция, используемая в качестве итератора
Notes
  • Аналогично sort { $hash{$a} <=> $hash{$b} } keys %hash в Perl
  • Итераторы используются в циклических конструкциях, таких как 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
Source extensions/fnutils/fnutils.lua строка 432

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.fnutils.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API