Модуль:Ustring/doc
Это страница документации Модуль:Ustring.
Этот модуль оценён как бета-версия. Он готов для широкого применения, но должен применяться с осторожностью. |
Этот модуль предоставляет класс для работы со строками в кодировке Юникод так же просто, как с обычными строками. Он используется в других модулях, не в функции #invoke.
Пример использования[править код]
local u = require('Module:Ustring')
local s = u.new('Хорошо живёт на свете %s!')
print(s:format('Винни-Пух')) --результат: Хорошо живёт на свете Винни-Пух!
print(s:format('Винни-Пух'):len()) --результат: 32
Конструктор new[править код]
local s = u.new( str )
Создаёт объект строки, идентичной строке str, но с другим набором методов.
Поля[править код]
string[править код]
Содержит исходную строку типа string.
new[править код]
Содержит конструктор, который применяется к строкам в результатах других функций. По умолчанию это конструктор new.
Обзор методов[править код]
Наследуются все методы из стандартной библиотеки ustring, при этом к каждой строке в результатах применяется self.new. Метод gmatch переопределён так, что применяет конструктор ко всем результатам итератора; метод gcodepoint не переопределён и итерирует по точкам Unicode, которые возвращаются в цикл как значения типа string (если надо применять конструктор, используйте s:gmatch(".")
).
Перегруженные операторы[править код]
Конкатенация ..[править код]
Объекты могут складываться между собой и с обычными строками, результат всегда объект.
Сравнение[править код]
Сравнивать можно только объекты между собой. Для сравнения применяется функция u.strcmp
, где u — объект, возвращённый require. Если переопределить эту функцию в этом объекте, все объекты ustring будут сравниваться иначе.
Индексация[править код]
Вызов объекта с числовым ключом возвращает символ с данным номером (типа string):
print( (u.new('Привет!'))[7] ) -- результат: "!"
Ограничения[править код]
Пока что метаметод __len
не поддерживается Lua, поэтому вместо оператора #s
надо писать s:len()
.