루아를 사용하여 매개 변수를 사용하여 함수를 동적으로 호출하려고합니다. 내가 문자열을 보낼 가있는 방식으로 구문 분석 :루아 : 인자로 함수를 동적으로 호출하기
- 첫번째 인수가 클래스 인스턴스 "핸들"
- 2가 모든 것을이 남아
- 이 인수입니다 호출 할 수있는 기능입니다
"모듈"{ string=<instance of a class> }
분할() 인덱스 문자열 테이블을 반환하는 간단한 파서 같은 AA 테이블입니다.
function Dynamic(msg)
local args = split(msg, " ")
module = args[1]
table.remove(args, 1)
if module then
module = modules[module]
command = args[1]
table.remove(args, 1)
if command then
if not args then
module[command]()
else
module[command](unpack(args)) -- Reference 1
end
else
-- Function doesnt exist
end
else
-- Module doesnt exist
end
end
나는 그것을 호출 모듈에서 "무시"과 관련된 인스턴스에서 "제거"를 시도, 인수 "밥을"제공 "참조 1"로, "밥을 제거 무시"로이 때, 테이블에 포함 된 값 (단일 값 포함).
그러나 호출의 다른 쪽에서는 remove 함수가 인수를받지 못합니다. 심지어 "참조 1"줄을
module[command]("bob")
으로 바꾸려고 시도했지만 동일한 결과가 나타납니다. 내가 잘못 무엇인지 알아 내려고 할 때
function TIF_Ignore:remove(name)
print(name) -- Reference 2
TIF_Ignore:rawremove(name)
TIF_Ignore:rawremovetmp(name)
print(title.. name.. " is not being ignored.")
end
내가 내 코드에서 "참조 2"추가 :
다음은 인수 "bob"
을받지 않는 다른 기능입니다. "remove bob"을 무시하거나 "참조 1"에서 "bob"을 "unpack (args)"으로 바꿀 때 "remove"의 변수 "nil"은 여전히 nil입니다.
코드가 정상적으로 보입니다. "상대방"은 어떤 모습입니까? –
그리고 함수 'split'은 표준 루아의 일부가 아니기 때문에 어떤 모양입니까? –