Таблица в функцию. Lua

Страницы: 1
RSS
Таблица в функцию. Lua
 
Всем Привет!
Подскажите пожалуйста возможно ли как то, вот такое реализовать, и если возможно то как ?
Есть функция, внутри которой заполняется таблица
И возможно ли как то сделать, что бы не писать несколько функций, менять таблицы в функции
Например что бы это выглядело примерно как то так.
Код
function Bla(Table) 
    Table = {} 
    for i = 1, 10 do
        Table[i] = #Table + 1
    end 
end 
Bla(Table_1) 
Bla(Table_2) 
Bla(Table_3) 
Конечно можно сделать вот так
Код
function Bla(Table) 
    for i = 1, 10 do
        Table[i] = #Table + 1
    end 
end 

Table_1 = {}
Bla(Table_1) 

Table_2 = {}
Bla(Table_2) 

Table_3 = {}
Bla(Table_3) 

Но хотелось бы что бы все манипуляции по объявлению таблиц происходили внутри функции и не приходилось каждый раз объявлять таблицу, перед вызовом функции
 
У таблицы обьявленой внутри функции областью видимости (по определению) будет эта самая функция.

Непонятно какого эффекта вы добиваетесь, вам нужны временные обьекты, вам надо эти таблицы возвращать из функции, еще что-то?
Функция например может работать с обьектами обьявленными один раз где-то в начале модуля, как вариант.
 
Цитата
BlackBoar написал:
У таблицы обьявленой внутри функции областью видимости (по определению) будет эта самая функция.
Почему? Я же не локально ее объявил
Цитата
BlackBoar написал:
Непонятно какого эффекта вы добиваетесь, вам нужны временные обьекты, вам надо эти таблицы возвращать из функции, еще что-то?Функция например может работать с обьектами обьявленными один раз где-то в начале модуля, как вариант.
Нет возвращать мне не надо,
У меня две функции плана Сохранить, восстановить, одна функция запоминает информацию в таблицу, а вторая восстанавливает из таблицы эту информацию

Код
function Save()     
    Table = {}
    for i = 1, количества_чего_то do
        Table[i] = Get_Моя_Функция(которая сохраняется)
    end 
end 

function Restore() 
    for i = 1, #Table do  
        Set_Моя_Функция_которая_восстанавливает(Table[i])
    end 
end


И в процессе работы скрипта сохранений восстановлений может быть целая куча, и я хочу что бы в скобочках объявляемой функции просто прописывался слот и всё
Примерно как то так:
Код
Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код
Restore(slot_1)
Сейчас у меня это работает вот так для незапутанного сохранения
Код
function Save()     
    Table = {}
    for i = 1, количества_чего_то do
        Table[i] = Get_Моя_Функция(которая сохраняется)
    end 
end 

function Restore() 
    for i = 1, #Table do  
        Set_Моя_Функция_которая_восстанавливает(Table[i])
        Table[i] = nil -- если надо очистить
    end 
end 
Код
Save()
 код   
Restore() 
 код
Save()   
 код
Restore()
А вот так для запутанного
Код
slot_1 = {}
Save(slot_1)   
 код
slot_2 = {}
Save(slot_2) 
   код
Restore(slot_2)
   код
slot_3 = {}
Save(slot_3) 
   код
Restore(slot_3) 
   код
Restore(slot_1)
И я хочу это превратить в это
Код
Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код Restore(slot_1)
 
Цитата
Archie_ написал:
Почему? Я же не локально ее объявил
Это вот из вашего начального поста и не было явно понятно.


По существу. Если я правильно понял у вас получается что-то типа массива таблиц. Или таблица элементы которой таблицы с которыми надо работать. Вам виднее как вам удобнее по индексу или по ключу. Вот масиив (или таблицу) создаем одну на модуль, функциям передаем индекс (или ключ) который им надо использовать для доступа к нужной таблице. Я себе это так представляю.
 
Инет предлогает миру безграничные возможности. Это и информация, и общение (электронная почта, скайп, форумы, блоги, сайты, социальные сети: Твиттер,Фейсбук,Вконтакте, Инстаграм), и возможность купить-продать что-либо, не выходя из дома (доски объявлений, Интернет магазины), и заработать в интернет можно, и отдохнуть (кино, игры) да и учится через интернет можно также.
Но и мошенники не дремлют. Осваивают простори Интернета. Нужно изучить основные правила осторожности, чтобы не стать жертвой мошенников. Мошенничество в Интернет.
Более детально можно ознакомится на http://interesu.ru/.
Карта сайта
 
Решил вот так:
Код
function Save(slot)     
    local t = {}
    _G[slot] = t
    for i = 1, количества_чего_то do
        t[i] = Get_Моя_Функция(которая сохраняется)
    end 
end 

function Restore() 
    local t = _G[Slot]
    for i = 1, #t do  
        Set_Моя_Функция_которая_восстанавливает(t[i])
        t[i] = nil -- если надо очистить
    end 
end 
Код
Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код 
Restore(slot_1)
 
Цитата
Archie_ написал:
Решил вот так:
Код
   function   Save (slot)     
     local  t  =  {}
    _G[slot]  =  t
     for  i  =   1 , количества_чего_то  do 
        t[i]  =  Get_Моя_Функция(которая сохраняется)
     end  
 end  

 function   Restore () 
     local  t  =  _G[Slot]
     for  i  =   1 ,  # t  do   
        Set_Моя_Функция_которая_восстанавливает(t[i])
        t[i]  =   nil   -- если надо очистить 
     end  
 end  
  
 
Код
  Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код 
Restore(slot_1)  
Вы сами поняли что написали?
У вас в определении функции Restore() нет формальных параметров
а в ее вызове Restore(slot_2) появляются
---------------------------------------------
" это не рыба, не заливная рыба, это стрихнин какой-то"
 
Цитата
Николай Камынин написал:
Вы сами поняли что написали?У вас в определении функции Restore() нет формальных параметрова в ее вызове Restore(slot_2) появляются
Я то понял, что написал, а вы если помочь не можете, то и не паясничайте!!!
Извините, что в функцию в примере параметр забыл вписать, но вы и так прекрасно все поняли, что я написал, а если не поняли, то так понятней?
Код
function Save (slot)          
    local  t  =  {}
    _G[slot]  =  t
    for  i  = 1 , количества_чего_то  do 
        t[i] = Get_Моя_Функция(которая сохраняется)
    end  
end  

function   Restore (Slot) 
    local  t  =  _G[Slot]
    for  i  =   1 ,  # t  do   
        Set_Моя_Функция_которая_восстанавливает(t[i])
        --t[i]  =   nil   -- если надо очистить 
    end  
end  

  
Код
Save(slot_1)    
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код 
Restore(slot_1) 
 
Цитата
Archie_ написал:
Цитата
Николай  Камынин написал:
Вы сами поняли что написали?У вас в определении функции Restore() нет формальных параметрова в ее вызове Restore(slot_2) появляются
Я то понял, что написал, а вы если помочь не можете, то и не паясничайте!!!
Извините, что в функцию в примере параметр забыл вписать, но вы и так прекрасно все поняли, что я написал, а если не поняли, то так понятней?
Код
   function  Save (slot)          
     local   t   =   {}
    _G[slot]   =   t
     for   i   =   1  , количества_чего_то   do  
        t[i]  =  Get_Моя_Функция(которая сохраняется)
     end   
 end   

 function    Restore (Slot) 
     local   t   =   _G[Slot]
     for   i   =     1  ,   #  t   do    
        Set_Моя_Функция_которая_восстанавливает(t[i])
         --t[i]  =   nil   -- если надо очистить  
     end   
 end   

  
  
 
Код
  Save(slot_1)    
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код 
Restore(slot_1)   
так никто и не понял что вы хотите сделать.
Пока не объясните что надо словами, а не вашими примерами
------------
могу лишь подсказать что в луа таблицы не копируются я передаются указателем поэтому предположу что ваша задача решается проще, но понять ее из ваших примеров невозможно.
Страницы: 1
Читают тему (гостей: 1)
Наверх