개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.03 04:48

Lua::call 함수 사용에 대한 도움을 부탁드립니다.

목록
  • 프로그래밍도깨비 1일 전 2025.05.03 04:48
  • 6
    1
제가 Lua::call 함수를 사용하여 메서드를 호출할 때, 매개변수를 어떻게 넘길 수 있는지 궁금합니다. 예를 들어, 다음 코드에서 어떤 방식으로 인자값을 넘길 수 있을까요?

```lua
local obj = {}
function obj:method(a, b) end

local function call_method(obj, method_name, ...)
local method = obj[method_name]
if type(method) == "function" then
return method(unpack( arg ))
-- 여기서 어떻게 인자를 넘길 수 있을까요?
else
print("Error: Method not found"
end

call_method(obj, "method", 1, 2)
end

    댓글목록

    profile_image
    나우호스팅  1일 전



    Lua::call 함수에서 인자를 넘기는 방법은 여러 가지가 있습니다.

    1. `unpack(arg)` 함수를 사용하여 인자를 넘길 수 있습니다. `arg`는 Lua에서 제공하는 내장 변수로, 함수의 인자를 담고 있습니다. `unpack(arg)` 함수를 사용하여 인자를 배열로 변환한 후, 해당 배열을 메서드에 넘길 수 있습니다.

    2. `...`를 사용하여 인자를 넘길 수 있습니다. `...`는 Lua에서 제공하는 가변 인자 변수로, 함수의 인자를 담고 있습니다. 메서드에 `...`를 사용하여 인자를 넘길 수 있습니다.

    3. `table.pack()` 함수를 사용하여 인자를 넘길 수 있습니다. `table.pack()` 함수를 사용하여 인자를 배열로 변환한 후, 해당 배열을 메서드에 넘길 수 있습니다.

    위의 예제에서 인자를 넘기는 방법을 수정한 코드는 다음과 같습니다.

    #hostingforum.kr
    lua
    
    local obj = {}
    
    function obj:method(a, b) end
    
    
    
    local function call_method(obj, method_name, ...)
    
        local method = obj[method_name]
    
        if type(method) == "function" then
    
            return method(...) -- ...를 사용하여 인자를 넘길 수 있습니다.
    
        else
    
            print("Error: Method not found")
    
        end
    
    end
    
    
    
    call_method(obj, "method", 1, 2)
    
    


    또는

    #hostingforum.kr
    lua
    
    local obj = {}
    
    function obj:method(a, b) end
    
    
    
    local function call_method(obj, method_name, ...)
    
        local method = obj[method_name]
    
        if type(method) == "function" then
    
            return method(unpack(arg)) -- unpack(arg) 함수를 사용하여 인자를 넘길 수 있습니다.
    
        else
    
            print("Error: Method not found")
    
        end
    
    end
    
    
    
    call_method(obj, "method", 1, 2)
    
    


    또는

    #hostingforum.kr
    lua
    
    local obj = {}
    
    function obj:method(a, b) end
    
    
    
    local function call_method(obj, method_name, ...)
    
        local method = obj[method_name]
    
        if type(method) == "function" then
    
            local args = {...} -- ...를 사용하여 인자를 배열로 변환합니다.
    
            return method(unpack(args)) -- unpack(args) 함수를 사용하여 인자를 넘길 수 있습니다.
    
        else
    
            print("Error: Method not found")
    
        end
    
    end
    
    
    
    call_method(obj, "method", 1, 2)
    
    

    2025-05-03 04:49

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 16,590건 / 27 페이지

검색

게시물 검색