Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lua

Войти
Регистрация
Восстановить пароль
 
Corona SDK
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 15
#1

Подскажите по ООП в Lua - Lua

13.02.2017, 18:52. Просмотров 385. Ответов 3
Метки нет (Все метки)

Всем привет! Изучаю язык и попытался коснуться объектов. Что нужно подправить чтобы код работал ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Groop  = {} -- Создаем группу людей (класс)
people = {} -- Массив объектов класса
 
counter = 1
 
 
function Groop:new ( deposit, id )-- Описание класса
 
        -- Свойства
        local obj = {}
 
        obj.deposit = deposit
        obj.id = id
 
 
        -- Метод чтения депозита
        function obj:getDeposit()
            return self.deposit
        end
 
        -- Метод записи депозита
        function obj:setDeposit( deposit )
            self.deposit = d
        end
 
        -- Метод чтения Id
        function obj:getId()
            return self.id
        end
 
        -- Метод записи id
        function obj:setId( id )
            self.id = id
        end
 
end -- Конец описания класса
 
math.randomseed ( os.time() )
 
 
while ( counter <= 100 ) do -- Цикл 100 раз
    people[counter] = Groop:new(  10000, math.random(1001, 9999) )-- Создаем объекты класса ( 100 штук ) с 2-мя характеристиками: депозит и id
    counter = counter + 1
end
 
counter = 1
 
while ( counter <= 100 ) do -- Выводим на экран айдишники всех созданных объектов
    print ( people[counter]:getId() )
    counter = counter + 1
end
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2017, 18:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите по ООП в Lua (Lua):

Lua, ооп библиотеки, виртуальные функции - Lua
Не подскажет ли кто ооп библиотеку с возможностью создания виртуальных функций - и самое главное с возможностью из виртуальной функции...

LUA + C++ - Lua
Привет всем :) я чото не понимаю чо у меня выевляется ошибки luaavg.obj : error LNK2001: неразрешенный внешний символ...

Парсер на lua - Lua
Тут описано как подключить и использовать и библиотеку для языка lua http://www.cyberforum.ru/cpp-builder/thread68085.html Возможно ...

lua script - Lua
Такое дело: Есть изображения, и есть скрипт на Lua, который эти изображения &quot;исполняет&quot;. Как собственно из этого сделать приложение...

Lua, Android - Lua
Доброго времени суток. Хочу попробовать себя а в разработке игр под Android (Android под Java начал осваивать недавно). Получил предложение...

Lua шифрование - Lua
Здравствуйте, есть такая задачка, кто-то сможет помочь? В файле содержатся целые числа в десятичном виде. Преобразовать каждое число в...

3
greg zakharov
1434 / 697 / 174
Регистрация: 07.05.2015
Сообщений: 1,346
Записей в блоге: 39
13.02.2017, 21:14 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Самый простой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
local Group = {}
 
function Group:new(o, deposit, id)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  self.deposit = deposit
  self.id = id
  return o
end
 
function Group:getDeposit()
  return self.deposit
end
 
function Group:setDeposit(deposit)
  self.deposit = deposit
end
 
function Group:getId()
  return self.id
end
 
function Group:setId(id)
  self.id = id
end
 
local people = {}
 
math.randomseed(os.time())
for i=0,100 do
  local rnd = math.random(1001, 9999)
  people[i] = Group:new(nil, 10000, rnd)
  print(people[i]:getId())
end
1
Corona SDK
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 15
13.02.2017, 22:30  [ТС] #3
greg zakharov большое спасибо коллега!

Добавлено через 47 минут
greg zakharov Я тут ваш код разобрал и понял что мой аналогичен вашему. Просто надо было пару строчек в описание моего класса вписать:

Добавлено через 54 секунды
setmetatable(obj, self)
self.__index = self
return obj

И все!
0
Mirmik
176 / 147 / 37
Регистрация: 27.02.2014
Сообщений: 790
17.02.2017, 17:49 #4
C++
1
2
3
4
5
6
7
8
9
10
local Group = {}
 
function Group:new(o, deposit, id)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  self.deposit = deposit
  self.id = id
  return o
end
???

Я думаю, вы все таки это хотели сделать:
C++
1
2
3
4
5
6
7
8
9
10
local Group = {}
Group.__index = Group
 
function Group:new(o, deposit, id)
  o = o or {}
  setmetatable(o, self)
  o.deposit = deposit
  o.id = id
  return o
end
От того, что вы назначили таблице o метатаблицу Group, self ни коем образом не превратился в o. Он по прежнему Group.

На самом деле, я и по ныне недоумеваю, почему базовый пример из настольной книги всех луашников выглядит так:
C
1
2
3
4
5
6
function Account:new (o)
      o = o or {}   -- create object if user does not provide one
      setmetatable(o, self)
      self.__index = self
      return o
    end
А не так:
C
1
2
3
4
5
6
7
Acount.__index = Acount
      
function Account:new (o)
      o = o or {}   -- create object if user does not provide one
      setmetatable(o, self)
      return o
    end
0
17.02.2017, 17:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2017, 17:49
Привет! Вот еще темы с ответами:

Быстродействие Lua - Lua
Мне не раз приходилось видеть, что ядро програмы написано на С++, а дополнительный функционал на Lua. Насколько это оправданно с точки...

*.lua in *.exe - Lua
Кто знает как скрипт на луа компилить в исполняемый файл, подскажите, хочу протестить несколько набросок на компах друзей, а установливать...

Плагин на Lua - Lua
Я не программист и всего чуток разбираюсь в Lua, поэтому все манипуляции с плагином проводились методом тыка=) Это изначально не мой...

Кириллица из Lua в C# - Lua
Добрый день, друзья! Начинаю знакомство с Lua. Столкнулся с проблемой некорректного чтения кириллицы в скриптах. Сам скрипт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru