개발자 Q&A

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

2025.06.26 18:16

LuaClosure::__invoke 관련 질문

목록
  • 최적화마스터 23일 전 2025.06.26 18:16
  • 53
    1
제가 지금 Lua를 공부중인데, Closure와 __invoke에 관련된 것을 공부하고 있습니다. 그러나 LuaClosure::__invoke의 정확한 역할에 대해 이해가 잘 안됩니다. 이에 대해 더 구체적인 설명이나 예시를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  23일 전



    Lua Closure는 함수를 객체로 다루는 개념입니다. Lua에서 Closure는 함수를 호출할 때 사용하는 객체입니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드입니다. 일반적으로 Lua에서 함수를 호출할 때는 함수 이름을 사용하지만, Closure의 __invoke를 사용하면 함수를 호출할 때 객체를 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    lua
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local closure = {add = add}
    
    
    
    print(closure.add(2, 3))  -- 5
    
    print(closure.__invoke("add", 2, 3))  -- 5
    
    


    위 코드에서 `closure`는 Closure 객체입니다. `closure.add`를 사용하면 `add` 함수를 호출할 수 있습니다. `closure.__invoke`를 사용하면 Closure 객체를 사용하여 함수를 호출할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    lua
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local function multiply(a, b)
    
        return a * b
    
    end
    
    
    
    local closure = {add = add, multiply = multiply}
    
    
    
    print(closure.add(2, 3))  -- 5
    
    print(closure.multiply(2, 3))  -- 6
    
    print(closure.__invoke("add", 2, 3))  -- 5
    
    print(closure.__invoke("multiply", 2, 3))  -- 6
    
    


    위 코드에서 `closure`는 Closure 객체입니다. `closure.add`와 `closure.multiply`를 사용하면 `add` 함수와 `multiply` 함수를 호출할 수 있습니다. `closure.__invoke`를 사용하면 Closure 객체를 사용하여 함수를 호출할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    lua
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local function multiply(a, b)
    
        return a * b
    
    end
    
    
    
    local function divide(a, b)
    
        return a / b
    
    end
    
    
    
    local closure = {add = add, multiply = multiply, divide = divide}
    
    
    
    print(closure.add(2, 3))  -- 5
    
    print(closure.multiply(2, 3))  -- 6
    
    print(closure.divide(6, 3))  -- 2
    
    print(closure.__invoke("add", 2, 3))  -- 5
    
    print(closure.__invoke("multiply", 2, 3))  -- 6
    
    print(closure.__invoke("divide", 6, 3))  -- 2
    
    


    위 코드에서 `closure`는 Closure 객체입니다. `closure.add`, `closure.multiply`, `closure.divide`를 사용하면 `add` 함수, `multiply` 함수, `divide` 함수를 호출할 수 있습니다. `closure.__invoke`를 사용하면 Closure 객체를 사용하여 함수를 호출할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    lua
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local function multiply(a, b)
    
        return a * b
    
    end
    
    
    
    local function divide(a, b)
    
        return a / b
    
    end
    
    
    
    local function subtract(a, b)
    
        return a - b
    
    end
    
    
    
    local closure = {add = add, multiply = multiply, divide = divide, subtract = subtract}
    
    
    
    print(closure.add(2, 3))  -- 5
    
    print(closure.multiply(2, 3))  -- 6
    
    print(closure.divide(6, 3))  -- 2
    
    print(closure.subtract(5, 2))  -- 3
    
    print(closure.__invoke("add", 2, 3))  -- 5
    
    print(closure.__invoke("multiply", 2, 3))  -- 6
    
    print(closure.__invoke("divide", 6, 3))  -- 2
    
    print(closure.__invoke("subtract", 5, 2))  -- 3
    
    


    위 코드에서 `closure`는 Closure 객체입니다. `closure.add`, `closure.multiply`, `closure.divide`, `closure.subtract`를 사용하면 `add` 함수, `multiply` 함수, `divide` 함수, `subtract` 함수를 호출할 수 있습니다. `closure.__invoke`를 사용하면 Closure 객체를 사용하여 함수를 호출할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    lua
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local function multiply(a, b)
    
        return a * b
    
    end
    
    
    
    local function divide(a, b)
    
        return a / b
    
    end
    
    
    
    local function subtract(a, b)
    
        return a - b
    
    end
    
    
    
    local function power(a, b)
    
        return a ^ b
    
    end
    
    
    
    local closure = {add = add, multiply = multiply, divide = divide, subtract = subtract, power = power}
    
    
    
    print(closure.add(2, 3))  -- 5
    
    print(closure.multiply(2, 3))  -- 6
    
    print(closure.divide(6, 3))  -- 2
    
    print(closure.subtract(5, 2))  -- 3
    
    print(closure.power(2, 3))  -- 8
    
    print(closure.__invoke("add", 2, 3))  -- 5
    
    print(closure.__invoke("multiply", 2, 3))  -- 6
    
    print(closure.__invoke("divide", 6, 3))  -- 2
    
    print(closure.__invoke("subtract", 5, 2))  -- 3
    
    print(closure.__invoke("power", 2, 3))  -- 8
    
    


    위 코드에서 `closure`는 Closure 객체입니다. `closure.add`, `closure.multiply`, `closure.divide`, `closure.subtract`, `closure.power`를 사용하면 `add` 함수, `multiply` 함수, `divide` 함수, `subtract` 함수, `power` 함수를 호출할 수 있습니다. `closure.__invoke`를 사용하면 Closure 객체를 사용하여 함수를 호출할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    lua
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local function multiply(a, b)
    
        return a * b
    
    end
    
    
    
    local function divide(a, b)
    
        return a / b
    
    end
    
    
    
    local function subtract(a, b)
    
        return a - b
    
    end
    
    
    
    local function power(a, b)
    
        return a ^ b
    
    end
    
    
    
    local function square(a)
    
        return a * a
    
    end
    
    
    
    local closure = {add = add, multiply = multiply, divide = divide, subtract = subtract, power = power, square = square}
    
    
    
    print(closure.add(2, 3))  -- 5
    
    print(closure.multiply(2, 3))  -- 6
    
    print(closure.divide(6, 3))  -- 2
    
    print(closure.subtract(5, 2))  -- 3
    
    print(closure.power(2, 3))  -- 8
    
    print(closure.square(3))  -- 9
    
    print(closure.__invoke("add", 2, 3))  -- 5
    
    print(closure.__invoke("multiply", 2, 3))  -- 6
    
    print(closure.__invoke("divide", 6, 3))  -- 2
    
    print(closure.__invoke("subtract", 5, 2))  -- 3
    
    print(closure.__invoke("power", 2, 3))  -- 8
    
    print(closure.__invoke("square", 3))  -- 9
    
    


    위 코드에서 `closure`는 Closure 객체입니다. `closure.add`, `closure.multiply`, `closure.divide`, `closure.subtract`, `closure.power`, `closure.square`를 사용하면 `add` 함수, `multiply` 함수, `divide` 함수, `subtract` 함수, `power` 함수, `square` 함수를 호출할 수 있습니다. `closure.__invoke`를 사용하면 Closure 객체를 사용하여 함수를 호출할 수 있습니다.

    Lua Closure의 __invoke는 함수를 호출하는 메서드이므로, 함수를 호출할 때 사용할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    ```lua
    local function add(a, b)
    return a + b
    end

    local function multiply(a, b)
    return a * b
    end

    local function divide(a, b)
    return a / b
    end

    local function subtract

    2025-06-26 18:17

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

검색

게시물 검색