Dmitry
Dmitry
Всех приветствую
Dmitry
подскажите пжалуйста.
что обозначает
array:slice
в
function array:slice(a, b)
checker(self, 't', a, 'n?', b, 'n?')
local t, i, j = array(), slice(self, a, b)
for i = i, j do t:insert(self[i]) end
return t
end
и как ее можено вызвать
Alexander
object:method(x ,y, z)
=
object.method(self, x, y, z)
синтаксический сахар
Dmitry
спасибо
Dmitry
чет не получается вызвать
Alexander
а как вызываешь?
Dmitry
это функции из http://pastebin.com/6K7VWaxZ
Alexander
ии?
Dmitry
делал так
local array = require("lib")
local a = array.slice(dimensions, 1)
Alexander
неа
Dmitry
если не сложно напиши как надо
Alexander
да, счас проверю
Dmitry
получается?
Alexander
local lib = require("lib") -- подключение библиотеки
local array = lib.array() -- создание объекта, определенного в библиотеке
local a = array:slice(dimensions, 1) -- вызов slice
Dmitry
спасибо
Dmitry
я понял свою ошибку
Dmitry
это своего рода как класс
Dmitry
в перле или пхп
Alexander
да. причем луа позволяет создать собственную систему наследования классов.
Dmitry
Program completed in 16.31 seconds (pid: 8972).
redis1.lua:42: Array: arg#2 error: "number" expected, got "table"
stack traceback:
[C]: in function 'error'
.\lib.lua:11: in function 'checker'
.\lib.lua:115: in function 'slice'
redis1.lua:42: in function 'getEntityPositionRepeatCount'
redis1.lua:48: in main chunk
Debugging session completed (traced 13 instructions).
Dmitry
Alexander
про метатаблицы почитать в мануале и в PIL
Dmitry
а можешь ошибку глянуть
Dmitry
что не тапк
Alexander
а зачем мне смотреть?
Alexander
тут все написано
Dmitry
видать я туплю
Alexander
в 42 строке скрипта redis1 в 2 аргументе вызова array стоит таблица, а ожидается число
Dmitry
r[position]['repeat'] = array_product(array:slice(positionsCount, position+1))
Dmitry
ну я вроде так и передаю
Alexander
positionsCount - это точно число?
Alexander
при :-вызове аргумент 1 скрытый (self)
Dmitry
local a = array:slice(dimensions, 1)
Dmitry
у тебя так
Dmitry
1 - это таблица
Dmitry
2 - это число
Alexander
ты сам дал.
dimensions должно быть числом
Dmitry
а где должен быть массив
Alexander
array:slice(dimensions, 1)
=
array.slice(array, dimensions, 1)
Alexander
нету его в параметрах, кроме self
Dmitry
а как тогда использовать
Dmitry
при объявлении?
Alexander
Alexander
я не понимаю, ЧТО ты хочешь от slice
Alexander
тут вот написано - чекер хочет таблицу в self, и числа в a, b
Dmitry
а как эту таблицу ему дать
Alexander
Alexander
Dmitry
positionsCount:slice(position+1)
Dmitry
по логике так должно быть
Alexander
ну да
Alexander
и тогда positionsCount надо создавать через lib.array(), а потом заполнять
Dmitry
те array это магическоепереобозначение таблицы?
Alexander
не понимаю термин
Dmitry
а как создать
Dmitry
вот таблица
local dimensions = {
getBigArray(1500),
getBigArray(150),
getBigArray(15),
getBigArray(3)
}
Alexander
Alexander
то есть это не зарезервированное ключевое слово языка или т.п.
Dmitry
local lib = require("lib")
local array = lib.array({
getBigArray(1500),
getBigArray(150),
getBigArray(15),
getBigArray(3)
})
Dmitry
те так?
Alexander
да, именно так, если я верно понимаю строки 74-75 в твоей либе
Dmitry
спасибо
Alexander
как успехи?
Dmitry
redis1.lua:42: Array: arg#3 error: "number" expected, got "nil"
stack traceback:
[C]: in function 'error'
.\lib.lua:11: in function 'checker'
.\lib.lua:115: in function 'slice'
redis1.lua:42: in function 'getEntityPositionRepeatCount'
redis1.lua:48: in main chunk
Debugging session completed (traced 16 instructions).
Snusmumriken
Ох, сколько вы наспамили :3
Dmitry
извините
Alexander
Alexander
Dmitry
так и есть
Snusmumriken
Умиляет что вы наспамили по моей либе, и даже кажется её читали.
Alexander
Dmitry
array_product(positionsCount:slice(position+1), #positionsCount)
Snusmumriken
Хм, кстати, обнаружил не совсем правильную проверку чекера, хм.
Dmitry
так нельзя?
Snusmumriken
Должно быть можно.
Какая версия lua, кстати? : 3
Dmitry
да твоя либа понятна
Dmitry
но чекер криво пашет
Dmitry
5.3