Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
6 / 5 / 2
Регистрация: 19.02.2018
Сообщений: 252
1

Lua наследование, lua ооп

10.09.2018, 22:52. Просмотров 1604. Ответов 2
Метки нет (Все метки)

Подскажите пожалуйста, как наследовать класс? Не получается выдаёт ошибку
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
local car  = {} -- Прежде чем создавать экземпляры объекта, необходимо описать соответствующий ему класс.
car.__index = car  --__index содержит указатель на сам класс. Это нужно будет для правильной работы оператора self
function car:set(model, color) --инициализируем поля класса
local self = setmetatable({},car) --далее идет превращение таблицы в "класс", объяснять не буду, т.к для этого нужна отдельная статья 
self.model = model -- 
self.color = color --  
return self
end 
function car:get() --функция получения результата 
return self.model, self.color 
end 
moto = {} -- инициализируем класс мото 
function moto:pet() --переназначение метода 
return "new" 
end 
setmetatable(moto,{__index = car}) --наследуемся 
m = moto.set("URAL","BLUE") --меняем название и цвет 
print(m:get()) -->мы увидим 2000 year 
print(m:pet()) --> URAL BLUE
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2018, 22:52
Ответы с готовыми решениями:

Подскажите по ООП в Lua
Всем привет! Изучаю язык и попытался коснуться объектов. Что нужно подправить чтобы код работал ?...

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

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

Учебник по Lua
Добрый день! Подскажите пожалуйста хороший учебник по Lua на русском или английском.

2
383 / 218 / 68
Регистрация: 07.05.2013
Сообщений: 747
11.09.2018, 10:38 2
1) экземпляр класса car либо не создается, либо потерялся по дороге
2) при перекрытии метода вместо get откуда-то появляется слово pet
0
6 / 5 / 2
Регистрация: 19.02.2018
Сообщений: 252
11.09.2018, 16:51  [ТС] 3
Спасибо большое за ваш ответ уважаемый vantfiles. Долго ломал голову, Как сделать правильное наследования от класса. Получилось так.
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
car = {} --создадим "класс" автомобиль 
function car:set(model) --инициализируем поля класса 
local obj = {} 
obj.model = model  
setmetatable(obj,self)  
self.__index = self --перед 
return obj -- возвращаем объект! 
end   
function car:get(obj)  
return self.model 
end 
moto = {} -- класс мото 
function moto:pet() --переназначение метода 
return "new" 
end 
setmetatable(moto,{__index = car}) --наследуемся 
m = moto:set("VAZ") --меняем название  
print(m:get()) -->мы увидим VAZ
print(m:pet()) --> new
Теперь интересует Как избавиться от двоеточие при объявление экземпляра класса?.
Помню как-то достигал.
вот здесь
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
local car  = {} -- Прежде чем создавать экземпляры объекта, необходимо описать соответствующий ему класс.
car.__index = car  --__index содержит указатель на сам класс. Это нужно будет для правильной работы оператора self
function car.set(model, color) --Создает экземпляр теперь уже объекта, описывает поля объекта и присваивает полям начальные значения.
  local self = setmetatable({}, car) --Переопределяет метатаблицу вновь созданного объекта, в результате чего объект получает доступ к методам класса. Методов пока нет, но они будут описаны позже.
    self.color = color
    self.model = model
  return self
end
function car.get_color(self)
  z = self.color
 return z 
end
function car.get_model(self)
  z = self.model
 return z 
end
local i = car.set("kia","black") -- ставим точку 
print(i:get_model())
Может кто-нибудь знает как именно этот класс наследовать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2018, 16:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Paf -> Lua
Дано: прога на Lua, упакованная в .paf. Прога хорошая, но местами глючная - писать свою обломно,...

Lua script
Расшифруйте пожалуйста

Многопоточность lua
Можно ли в lua добиться реальной многопоточности?

Lua mapping
Кто программировал карты lua отзовитись нужна помощь с работой в 3ds. Нужен специалист или помощь...


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

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

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