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).
Alexander
про метатаблицы почитать в мануале и в PIL
Alexander
а где прочитать про это
=> читать про метатаблицы
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
а как эту таблицу ему дать
так array и есть таблица
Alexander
local lib = require("lib") -- подключение библиотеки local array = lib.array() -- создание объекта, определенного в библиотеке local a = array:slice(dimensions, 1) -- вызов slice
тут она создается пустая в 2 строке чтобы заполнить значениями. надо что-то добавить между 2 и 3 строками
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
local lib = require("lib") -- подключение библиотеки local array = lib.array() -- создание объекта, определенного в библиотеке local a = array:slice(dimensions, 1) -- вызов slice
array в этом примере - название переменной, которая ссылается на таблицу с реализованными методами типа slice и остальными.
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
Dmitry
так и есть
Snusmumriken
Умиляет что вы наспамили по моей либе, и даже кажется её читали.
Alexander
Dmitry
array_product(positionsCount:slice(position+1), #positionsCount)
Snusmumriken
Хм, кстати, обнаружил не совсем правильную проверку чекера, хм.
Dmitry
так нельзя?
Snusmumriken
Должно быть можно. Какая версия lua, кстати? : 3
Dmitry
да твоя либа понятна
Dmitry
но чекер криво пашет
Dmitry
5.3