2013-11-04 22 views
5

Pek çok "(windows) kullanıcı gibi" Kaynaktan bir şey derlemek için zaman harcamak istemiyorum. Yani Lua bir hobici için çok iyi bir seçim gibi görünüyor. ama ...Modüller nasıl kontrol edilir ve komut satırında kontrol işlevleri var mı?

S1 - Bu çok basit bir sorun ise

üzgünüm. Tercümanın herhangi bir örneği için mevcut modülleri nasıl listeleyebilirim?

Bazı ikili dağıtımlarda DLL olarak derlenmiş bir dizi modül bulunur ve bunların bazıları ana EXE'e eklenir. EXE'lerde hangi modüllerin yerleşik olduğunu bilmek ve cpath'in başka bir DLL modülünü bulup bulmadığını kontrol etmek güzel olurdu.

Q2. Lua'daki komuta hattında yardım almanın bir yolu var mı?

Lua'ya yeni olduğum için, herhangi bir işlev için yardım almanın kolay bir yolunu bulmak istiyorum. Bazı yorumlanmış dillerde bir yardım ("fname") işlevi vardır, Matlab iyi bir örnektir.

Q3. GSL-Shell'den bu işlev, bir yardım sistemi için temel olarak değiştirilebilir mi?

 
local ffi = require 'ffi' 

local help_files = {'graphics', 'matrix', 'iter', 'integ', 'ode', 'nlfit', 'vegas', 'rng', 'fft'} 

local cdata_table = {'matrix', 'complex matrix', 'complex'} 

local function help_init(...) 
    local REG = debug.getregistry() 
    REG['GSL.help_hook'] = {} 
end 

local function open_module(modname) 
    local fullname = string.format('help/%s', modname) 
    local m = require(fullname) 
    return m 
end 

local function search_help(func) 
    for k, modname in ipairs(help_files) do 
     local mt = getmetatable(func) 
     local module = open_module(modname) 
     if module[func] then 
      local help_text = module[func] 
      return help_text 
     end 
    end 
end 

help_init() 

-- declare a global function 
function help(x) 
    local txt 
    if type(x) == 'function' then 
     txt = search_help(x) 
    elseif type(x) == 'userdata' then 
     local mt = getmetatable(x) 
     if mt then txt = search_help(mt) end 
    elseif type(x) == 'cdata' then 
     local cname = gsl_type(x) 
     if cname then txt = search_help(cname) end 
    end 
    --- Could we check that the function exists? 
    print(txt or "No help found for the given function") 
end 
+0

S1: Bunu yapmak için yerleşik veya gerçekten merkezi bir yol yoktur. Benim tavsiyem [LuaDist] (http://luadist.org/) ve [LuaRocks] (http://luarocks.org/) Lua paket yöneticileri ( ) 'a göz atmak olurdu. [LFW] (http://code.google.com/p/luaforwindows/) (Windows için Lua) projesi yararlıdır ... – Kamiccolo

cevap

1

Q2 (sadece belirli bir fonksiyonun varlığını doğruladı bile olsa yardımcı olacağını): Böyle herhangi bir standart yardım özelliği yoktur. Belge formatını standartlaştırmak için birkaç çaba harcanıyordu, fakat benim bildiğim kadarıyla hiçbiri çok fazla çekişme elde etmedi.

S3: Bu işlev, yardım dosyalarının gerektiği gibi kurulduğunu varsayarak bir yardım sisteminin temeli olarak kullanılabilir.

Belirli bir modülde hangi işlevlerin bulunduğunu öğrenmek isterseniz, genellikle sadece modül tablosunu boşaltabilirsiniz ve öğrenebilirsiniz. Örnek olarak lua demosundan globals example'a bakın.

İlgili konular