Модуль: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().