Можно ли переопределить некоторые методы стандартного класса строк, чтобы их можно было вызвать с помощью оператора точки? Например:вызов метода lua string с помощью оператора точки
s = "hello world"
print(s.len())
Можно ли переопределить некоторые методы стандартного класса строк, чтобы их можно было вызвать с помощью оператора точки? Например:вызов метода lua string с помощью оператора точки
s = "hello world"
print(s.len())
Для типов, которые не являются таблицей или полным UserData, каждый типа имеет метатаблицу. То есть вместо каждой отдельной строки, имеющей свой собственный метатебель, все строки имеют один и тот же метатебель.
Стандартная библиотека строк Lua по умолчанию присваивает этот метатег таблице string
. Поэтому, если вы хотите, вы можете добавить записи в string
.
Предоставлено, len
не имеет смысла, так как у нас есть #
, чтобы вычислить это. И вам нужно будет использовать синтаксис вызова :
, если вы хотите передать строку в качестве первого параметра.
Вы можете установить метасимвол 'call', но вам нужно будет сохранить строку в некотором содержащем объект. Но не с самой строкой, если я прав. использование '#', вероятно, проще. – Jakuje
Я не вижу никакой связи между заголовком вопроса и содержанием вопроса. –
Ваш вопрос непонятен - название и тело непоследовательны после вашего редактирования. Самореферентные методы вызывают с помощью двоеточия ('s: len()') - если вы не хотите писать 's.len (s)'. Вы читали [Программирование в Lua: OOP] (http://www.lua.org/pil/16.html)? – Oka