문제
나는 LUA에 작은 OOP 라이브러리를 구현했지만 아직 두 가지가 옳지 않습니다. 나는 당신의 조언이 필요합니다!
super ()를 호출하는 방법?
선택해야합니다. Super ()에 대한 호출을 해결하는 데 필요한 세 가지 주장은 다음과 같습니다.
- 전화가있는 곳에서 수업 (발신자)
- 통과 할 인스턴스 (자기)
- 메소드의 이름 (메소드)
나는이 세 가지 형태를 망설입니다.
--# Current way:
self:super(CallerClass):method()
--# Variant, which I now find cleaner:
CallerClass:super(self):method()
--# Python style, which is nice too:
super(CallerClass, self):method()
어느 것이 당신에게 더 멋지거나 기억하기 쉬운가?
클래스 기호가 필요합니까?
현재 버전에서 유일한 개념은 Object
, 서브 클래스 할 수 있습니다. 클래스 기호를 소개 한 다른 버전이 있습니다.
그것의 사용은 수업에서 인스턴스를 알려주는 것입니다. 즉 :
assert(Object:isKindOf(Class))
local object = Object:new()
assert(not object:isKindOf(Class))
메소드를 시작하여 메소드에서 메소드에서 호출되어야한다는 것을 문서화하고 시행하는 것이 매우 편리합니다.
assert(self:isKindOf(Class))
Lua에서 유용합니까? 어떻게 생각해? 감사!
해결책
--# Python style, which is nice too:
super(CallerClass, self):method()
다른 팁
나는 클래스 객체가 있다고 말할 것입니다 - 더 많은 정보/메타 데이터가 더 좋습니다.
감사합니다 Chris.
관심있는 사람들은 코드가 LUA 사용자 위키에 게시됩니다. ObjectLua.
제휴하지 않습니다 StackOverflow