1
를 통해 '네임 스페이스를 사용하여'나는 파일 foo.lua
이있는 경우 : bar.lua
에 내가 foo.add()
모든 시간을 입력하여 방해하고 foo.lua
의 코드를 많이 사용하고 작성하는 것을 선호C를 에뮬레이션 ++ _ENV
local foo = {}
foo.add = function(a, b) return a+b end
foo.sub = function(a, b) return a-b end
foo.multiply = function(a, b) return a*b end
return foo
과
local foo = require('foo')
local add, sub, multiply = foo.add, foo.sub, foo.multiply
을하지만 당신이 많은 파일에서 많은 값을 앨리어싱 포함되어 통증이있을 시작 : 단지 add()
bar.lua
에서 나는이를 추가 할 수 있습니다.
#include <iostream>
using namespace std
가 : C++에서이 주위에 방법이 있으므로
내가 무엇을 말할 수에서local foo = require('foo')
setmetatable(_ENV, {__index = foo})
이 범위를 존중 코드 같은 것 아래의 코드는 작동하지 않습니다.
실제로 아래 코드는 작동하지 않습니다. 나는 lua repl을 통해 코드를 실행하고 있었다. 아래 코드 조각을 lua 파일에 썼을 때 원하는 결과를 얻지 못했습니다.
f = function() -- returns 2
setmetatable(_ENV, {__index = foo})
return add(1, 1)
end
add(1, 1) -- returns 2
이 작업을 후회할만한 이유가 있습니까? (이외에도 이유는 using namespace
)
이러한 방식으로 C++을 사용하는 것은 점차 빈약 한 실천으로 간주되고 있습니다. –
나는 C++에서 인기가 없다는 이유를 알고 있으며,이 스레드에 대한 응답을 얻은 후에 루아 코드 전체에 퍼팅을 시작합니다. 가능한 경우 코드를 읽기 쉽지 않게하기 때문에 고급 지식을 필요로하는 코드 작성을 피하는 경향이 있습니다. 이는 분명히 해당 규칙을 위반하는 것입니다. 나는 단지 궁금했다. – Julian