Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lua
Войти
Регистрация
Восстановить пароль
 
Егор Щербанов
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 26
#1

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

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

Подскажите пожалуйста, как наследовать класс? Не получается выдаёт ошибку
Код
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2018, 22:52
Ответы с готовыми решениями:

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

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

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

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

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

2
vantfiles
33 / 33 / 16
Регистрация: 07.05.2013
Сообщений: 128
11.09.2018, 10:38 #2
1) экземпляр класса car либо не создается, либо потерялся по дороге
2) при перекрытии метода вместо get откуда-то появляется слово pet
0
Егор Щербанов
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 26
11.09.2018, 16:51  [ТС] #3
Спасибо большое за ваш ответ уважаемый vantfiles. Долго ломал голову, Как сделать правильное наследования от класса. Получилось так.
C
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
Теперь интересует Как избавиться от двоеточие при объявление экземпляра класса?.
Помню как-то достигал.
вот здесь
C
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2018, 16:51

Ошибка lua
Всем привет Попался мне один файлик resource.car после его распаковки появилось 40 файлов с...

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

Установка Lua
Здравствуйте! Подскажите, пожалуйста как это сделать: Что бы вы могли запускать луа откуда...


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

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

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