저는 C++ 응용 프로그램의 데이터 기술 언어로 Lua를 사용하고 있습니다. SLB 2.0을 사용하여 Lua에 바인딩 된 C++ 클래스가 많이 있습니다. 'SetPos'또는 'SetName'과 같은 메서드 바인딩이 있습니다. 필자는 'pos'또는 'name'으로 키 값이 지정된 테이블을 사용하여 위치 또는 이름을 지정합니다 (예 :). 나는 열쇠를 가져 와서 'set'을 앞에두고 메소드가 존재한다면 그것을 호출 할 수 있기를 원한다. 그게 가능하니? 그렇다면 어떤 제안입니까?루아는 대소 문자를 구별하지 않는 메소드 호출을 지원할 수 있습니까?
내 바운드 메서드는 소문자로 만들 수 있지만 대신 바인딩 된 메서드와 동일하게 유지해야한다는 것을 알고 있습니다 (즉, 내 후퇴 일 수 있음). 내 명명 표준을 기반으로 메서드 이름을 만들려고 할 수도 있지만 대소 문자를 구분하지 않으면 오류가 발생하지 않습니다.
은 메타를 사용하여 이것을 해결할 수있는 까다로운 Lua가되어야한다고 생각합니다.하지만 직접 해결할 수는 없습니다.
제안 사항?
감사합니다.
저는 SLB에 익숙하지 않습니다. C++에 어떻게 든 바인딩 된 함수로 가득 찬 테이블을 가지고 있습니까? '__index' 메타 테 이블 메소드를 정의하여 테이블에서 대소 문자를 구분하지 않고 일치하는 메소드를 검색하고 리턴 할 수 있기 때문에 함수가 가득 찬 테이블을 가지고 있다면 원하는 것을 할 수 있습니다. 그렇다면 왜 당신은 이것을 필요로합니까? 루아 함수는 일반적으로 대소 문자를 구별하므로 함수를 그대로두면 아무런 문제가 없습니다. –
양쪽 위치에서 정확히 같은 이름 (+/-'set' 접두어)을 사용하는 일관성 정책을 채택하고 준수 할 것을 강력하게 제안합니다. –
케이스와 함께 약간 느긋하게하고 싶은 이유는 케이스에 오류가 발생하면 런타임이 얼마인지 알 수 없기 때문입니다. 분명히 쇼 스토퍼는 아니지만 좋을 것입니다. 왜 내가 처음부터 그것을하고 싶은지에 대한 이유는 (예 : 정의 배열에서) 내 루아 파일에서 변수 (name = "blah")를 가져 와서 메서드 호출 (myObj.SetName ("blah")). –