2013-11-04 26 views
5

कई "(विंडोज़) उपयोगकर्ताओं की तरह" मैं स्रोत से कुछ भी संकलित करने के लिए सीखने में समय बिताना नहीं चाहता हूं। तो लुआ एक शौकिया के लिए बहुत अच्छा विकल्प लगता है।मैं मॉड्यूल कैसे सूचीबद्ध कर सकता हूं और कमांड लाइन पर फ़ंक्शन मौजूद कर सकता हूं?

क्षमा करता है, तो यह एक बहुत ही सरल समस्या है - लेकिन ...

Q1। मैं दुभाषिया के किसी भी दिए गए उदाहरण के लिए उपलब्ध मॉड्यूल कैसे सूचीबद्ध कर सकता हूं?

कुछ बाइनरी डिस्ट्रोज़ में डीएलएल के रूप में संकलित कई मॉड्यूल हैं, और कुछ ने उन्हें मुख्य EXE में जोड़ा है। यह जानना अच्छा होगा कि EXE में कौन से मॉड्यूल बनाए गए हैं, और जांचें कि सीपीएथ किसी अन्य डीएलएल मॉड्यूल को ढूंढ रहा है।

प्रश्न 2। लुआ में कमांड लाइन पर मदद पाने का कोई तरीका है?

जैसा कि मैं लूआ के लिए नया हूं, मुझे किसी दिए गए फ़ंक्शन के लिए सहायता प्राप्त करने का एक आसान तरीका चाहिए। कुछ व्याख्या की गई भाषाओं में एक सहायता ("fname") फ़ंक्शन है, मैटलैब एक अच्छा उदाहरण है।

क्यू 3। क्या जीएसएल-शैल से यह कार्य एक सहायता प्रणाली के आधार के रूप में संशोधित किया जा सकता है? (यह सिर्फ एक दिया समारोह के अस्तित्व की पुष्टि यहां तक ​​कि अगर यह मदद मिलेगी)

 
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

प्रश्न 1: ऐसा करने के लिए कोई अंतर्निहित या वास्तव में केंद्रीकृत तरीका नहीं है। मेरी सलाह [लुआडिस्ट] (http://luadist.org/) और [लुआरोक्स] (http://luarocks.org/) लुआ पैकेज मैनेजर्स की जांच करना होगा :) भी ... शायद आपको मिलेगा [एलएफडब्लू] (http://code.google.com/p/luaforwindows/) (विंडोज़ के लिए लुआ) परियोजना या तो उपयोगी ... – Kamiccolo

उत्तर

1

Q2: वहाँ इस तरह के किसी भी मानक मदद सुविधा नहीं है। प्रलेखन प्रारूप पर मानकीकृत करने के कुछ प्रयास हुए हैं, लेकिन, मेरे ज्ञान के लिए, उनमें से कोई भी कभी भी कर्षण प्राप्त नहीं कर पाया है।

क्यू 3: यह फ़ंक्शन निश्चित रूप से एक सहायता प्रणाली के आधार के रूप में उपयोग किया जा सकता है मानते हुए कि आपने उचित रूप से स्थापित फ़ाइलों की सहायता की थी।

यह कहा जा रहा है कि अगर आप यह जानना चाहते हैं कि किसी दिए गए मॉड्यूल से कौन से फ़ंक्शन उपलब्ध हैं तो आप आम तौर पर मॉड्यूल तालिका को डंप कर सकते हैं और पता लगा सकते हैं। उदाहरण के रूप में लुआ डेमो से globals example देखें।

संबंधित मुद्दे