2012-01-12 7 views
2

私は、ファイルがtest1.luaパッケージをローカルにLuaにロードするにはどうすればよいですか?

function print_hi() 
    print("hi") 
end 

と呼ばれてきたと私はtest2.luaと呼ばれる別のファイルへの機能を利用できるようにしたい場合は、私が書く:

require 'test1' 
function print_hi_and_bye() 
    print_hi() 
    print('bye') 
end 

しかし、今の私に言わせてprint_hi_and_bye()ではなくprint_hi()を公開したいtest3.luaという3番目の関数があります。 'test2'が必要な場合は、print_hiとprint_hi_and_bye()関数の両方にアクセスできます。これを回避し、test1の機能をtest2のローカルに保つことで、間違って使用することはありません。コードをリファクタリングするだけでなく、luaのロード機能でこれを行う方法はありますか?あなたがそれを要求しただけで目に見える誰のためtest1.lua関数を作成する必要があり

おかげ

答えて

6

。このため、ファイルtest1.luatest2.luaでいくつかの変更が必要とされています

test1.lua

local pkg = {} 
function pkg.print_hi() 
    print("hi") 
end 
return pkg 

test2.lua

local m = require 'test1' 
function print_hi_and_bye() 
    m.print_hi() 
    print('bye') 
end 

変更は最小限であり、そして今あなたができますあなたがそれらを要求したファイルでのみ機能を使用してください。

Lua 5.1では、便宜のためtest1.luamodule関数を使用できます。

module("test1") 

function print_hi() 
    print("hi") 
end 

ルア5.2では、この関数はviolated the design principles of Luaとして非推奨です。代わりに、最初の例に示すように行う必要があります。

+0

ありがとうございます!それはまさに私が探していたものです! – akobre01

関連する問題