#lua
Вопрос:
Мне интересно, как я могу заставить что-то подобное работать:
Test ={}
function Test:returnNumber5 ()
return 5
end
function Test:add5( num )
return num 5
end
function randumFunction()
local num = Test:returnNumber5():add5()
if num == 10 then
print(num)
end
end
Я ищу, чтобы сложить или связать вместе код:
Тест:returnNumber5():add5():add5():add5()
Я не понимаю, как настроить длинные цепочки функций. Я понимаю, как вызывать их и заставлять их делать то, что я хочу, при моддинге других игр, но не знаю, почему это не работает для моей игры. Я ввел приведенный выше тестовый код в свою игру, и он просто выводит мою игру из строя без каких-либо подробностей, используя фреймворк Love2D
Пожалуйста, помогите, если сможете, спасибо!
Комментарии:
1. Непонятно, о чем вы спрашиваете. Пожалуйста, отредактируйте свой вопрос, чтобы включить какой-то реальный код, который вы пробовали, а не псевдокод. Также покажите нам свой фактический результат и результат, который вы пытаетесь получить.
2. Я отредактировал. Извините, трудно сказать, что я ищу
3. Когда я говорю «фактический код», я имею в виду код, который мы можем скопировать, вставить и запустить сами. Ключевые слова Lua не пишутся с заглавной буквы. «Больше кода» следует прокомментировать. И отформатируйте код с помощью значка {}. Мы все еще не знаем, что вы пытаетесь сделать, связывая функции. Добавьте несколько
4. А ну понятно. Я здесь новенькая. Не знаю, что вы все ищете. Буду повторно редактировать спасибо
5. Это лучшее, что я могу сделать со своим телефоном прямо сейчас, и текстовый редактор здесь странно работать с lol, я скоро освоюсь с этим, надеюсь
Ответ №1:
Прежде всего, вам нужен конструктор для создания объекта:
Test = {}
function Test:new()
local o = {}
setmetatable(o, self)
self.__index = self
return o
end
Второе-вернуть себя, если вы хотите использовать форму object:doSomething():doSomethingElse()
.
Test = {}
function Test:new()
local o = {}
setmetatable(o, self)
self.__index = self
return o
end
function Test:setNumber5()
self.num = 5
return self
end
function Test:add5()
self.num = self.num 5
return self
end
function Test:value()
return self.num
end
function randumFunction()
local num = Test:new():setNumber5():add5():value()
if num == 10 then
print(num)
end
end
Комментарии:
1. Я знал, что это как-то связано с метаметодами! Лол спасибо за ответ
2. Пожалуйста. Участник, которого вы можете нажать , если считаете, что ответ полезен, и нажмите «Ответить», если это решит вашу проблему.
3. Хм, не вижу никакого знака» «. Кроме того, я не думаю, что смогу пока дать ответ. У меня на счету недостаточно очков