코드의 위치가 변경되지 않는 다음과 같은 시나리오가 있습니다. 이 코드를 수정하여 함수 및 테이블 변수를 이동하지 않고 오류를 수정하는 방법 나는 단지 4 일간 루아 초보자입니다함수가 나중에 선언 될 때 루아 테이블에서 필드 값으로 함수를 갖는 방법은 무엇입니까?
function a()
print("function a");
end
ftable = {
["a"] = a,
["b"] = b
};
function b()
print("function b");
end
ftable["a"](); -- prints 'function a'
ftable["b"](); -- attempt to call field 'b' (a nil value)
업데이트 : 다음과 같은 메커니즘을 사용하여 가능합니다.
function a()
print("function a");
end
ftable = {
["a"] = a,
["b"] = "b"
};
function b()
print("function b");
end
ftable["a"](); -- prints 'function a'
_G[ftable["b"]]();
그럴 수 없습니다. 왜 처음에이 일을하고 싶은지 자신에게 물어봐야합니다 ... – Piglet
@Anish 질문에 답을 없애고 대답으로 게시하십시오.하지만 ftable.b에 함수를 할당 할 수는 있습니다. 답에 만족하면 자신의 답이더라도 답을 받아 들일 수 있습니다. (설명을 추가하면 개선 될 수 있습니다.) –
마지막 행은 ftable [_G [ "b"]]()'이어야합니다. – lhf