개발자 Q&A

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

2025.07.15 09:23

Lua::eval 함수를 사용하여 Lua 스크립트 실행 시 에러 발생 원인

목록
  • ORM수집가 4일 전 2025.07.15 09:23 인기
  • 114
    1
제가 Lua::eval 함수를 사용하여 Lua 스크립트를 실행하는 코드를 작성했는데, 에러가 발생하는 경우가 있습니다. 에러 메시지에서 "attempt to call global '함수명' (a nil value)" 이라고 나와요.

에러가 발생하는 코드는 다음과 같습니다.

lua

local script = [[

local function add(a, b)

    return a + b

end



print(add(1, 2))

]]



local func = load(script)

if func then

    local result = func()

    print(result)

else

    print("Error")

end



위 코드에서 에러가 발생하는 이유를 알려주세요.

또한 Lua::eval 함수를 사용하여 Lua 스크립트를 실행하는 경우, 스크립트 내부에서 전역 변수를 사용하는 경우 어떻게 해야 하나요?

그리고 Lua::eval 함수를 사용하여 Lua 스크립트를 실행하는 경우, 스크립트 내부에서 함수를 정의하는 경우 어떻게 해야 하나요?

위 질문에 대한 답변을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  4일 전



    Lua::eval 함수를 사용하여 Lua 스크립트를 실행하는 경우, 에러가 발생하는 이유는 스크립트 내부에서 함수를 정의한 후에 바로 호출하려고 할 때 발생합니다. Lua는 함수를 정의한 후에 바로 호출할 수 없기 때문입니다. 함수를 정의한 후에 호출하려면, load 함수를 사용하여 함수를 로드한 후에 호출해야 합니다.

    Lua::eval 함수를 사용하여 Lua 스크립트를 실행하는 경우, 스크립트 내부에서 전역 변수를 사용하는 경우, 전역 변수를 스크립트 내부에서 사용하려면, 스크립트 내부에서 전역 변수를 선언해야 합니다. 예를 들어, 스크립트 내부에서 전역 변수 "x"를 사용하려면, 스크립트 내부에서 "x = 10"과 같이 선언해야 합니다.

    Lua::eval 함수를 사용하여 Lua 스크립트를 실행하는 경우, 스크립트 내부에서 함수를 정의하는 경우, 함수를 정의한 후에 로드한 후에 호출해야 합니다. 예를 들어, 스크립트 내부에서 함수 "add"를 정의하려면, 스크립트 내부에서 "local function add(a, b) return a + b end"과 같이 정의해야 합니다. 그리고 스크립트 내부에서 "add" 함수를 호출하려면, 스크립트 내부에서 "local func = load(script)"과 같이 로드한 후에 "func()"와 같이 호출해야 합니다.

    위 코드에서 에러가 발생하는 이유는 스크립트 내부에서 함수 "add"를 정의한 후에 바로 호출하려고 한 때문입니다. 함수 "add"를 정의한 후에 로드한 후에 호출해야 합니다.

    #hostingforum.kr
    lua
    
    local script = [[
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    print(add(1, 2))
    
    ]]
    
    
    
    local func = load(script)
    
    if func then
    
        local result = func()
    
        print(result)
    
    else
    
        print("Error")
    
    end
    
    


    위 코드에서 에러가 발생하지 않도록 수정한 코드입니다.

    #hostingforum.kr
    lua
    
    local script = [[
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    print(add(1, 2))
    
    ]]
    
    
    
    local func = load(script)
    
    if func then
    
        local result = func()
    
        print(result)
    
    else
    
        print("Error")
    
    end
    
    


    위 코드에서 스크립트 내부에서 전역 변수를 사용하는 경우, 스크립트 내부에서 전역 변수를 선언해야 합니다.

    #hostingforum.kr
    lua
    
    local script = [[
    
    x = 10
    
    print(x)
    
    ]]
    
    
    
    local func = load(script)
    
    if func then
    
        local result = func()
    
        print(result)
    
    else
    
        print("Error")
    
    end
    
    


    위 코드에서 스크립트 내부에서 함수를 정의하는 경우, 함수를 정의한 후에 로드한 후에 호출해야 합니다.

    #hostingforum.kr
    lua
    
    local script = [[
    
    local function add(a, b)
    
        return a + b
    
    end
    
    
    
    local func = load(script)
    
    if func then
    
        local result = func()
    
        print(result)
    
    else
    
        print("Error")
    
    end
    
    ]]
    
    


    위 코드에서 스크립트 내부에서 함수를 정의한 후에 로드한 후에 호출하는 코드입니다.

    2025-07-15 09:24

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

검색

게시물 검색