Модул:Ustring/doc
This is the documentation page for Модул: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()
.