문제

나는 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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top