6

多くの「(windows) ユーザー」のように、ソースから何かをコンパイルする方法を学ぶのに時間を費やしたくありません。そのため、Lua は愛好家にとって非常に良い選択のようです。

これが非常に単純な問題である場合は申し訳ありませんが...

Q1. インタプリタの任意のインスタンスで利用可能なモジュールを一覧表示するにはどうすればよいですか?

一部のバイナリ ディストリビューションには、多数のモジュールが DLL としてコンパイルされており、一部はメインの EXE に追加されています。どのモジュールが EXE に組み込まれているかを知り、cpath が他の DLL モジュールを見つけているかどうかを確認するとよいでしょう。

Q2. Lua のコマンドラインでヘルプを表示する方法はありますか?

私は Lua を初めて使用するので、特定の関数のヘルプを簡単に取得できる方法が欲しいです。一部のインタープリター言語には help("fname") 関数があり、Matlab が良い例です。

Q3. GSL-Shell のこの関数をヘルプ システムの基礎として変更できますか? (特定の関数の存在を確認しただけでも役立ちます)

ローカル ffi = 'ffi' が必要

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

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

ローカル関数 help_init( ... )
    ローカル REG = debug.getregistry()
    REG['GSL.help_hook'] = {}
終わり

ローカル関数 open_module(modname)
    local fullname = string.format('help/%s', modname)
    ローカル m = 必須 (フルネーム)
    mを返す
終わり

ローカル関数 search_help(func)
    for k, modname in ipairs(help_files) do
        ローカル mt = getmetatable(func)
        ローカルモジュール = open_module(modname)
        if module[機能] then
            local help_text = モジュール[関数]
            help_text を返す
        終わり
    終わり
終わり

help_init()

-- グローバル関数を宣言します
関数ヘルプ(x)
    ローカル txt
    タイプ(x) == '関数'の場合
        txt = search_help(x)
    elseif type(x) == 'userdata' の場合
        ローカル mt = getmetatable(x)
        if mt then txt = search_help(mt) end
    elseif type(x) == 'cdata' なら
        ローカル cname = gsl_type(x)
        if cname then txt = search_help(cname) end
    終わり
    --- 関数が存在することを確認できますか?
    print(txt または "指定された関数のヘルプが見つかりません")
終わり
4

1 に答える 1

1

Q2: そのような標準のヘルプ機能はありません。ドキュメント形式を標準化するための取り組みがいくつかありましたが、私の知る限り、どれもあまり注目を集めていません。

Q3: ヘルプ ファイルが適切に設定されていれば、その関数はヘルプ システムの基礎として使用できます。

そうは言っても、特定のモジュールから利用できる機能を知りたいだけなら、通常はモジュールテーブルをダンプして調べることができます。例として、lua デモのグローバルの例を参照してください。

于 2013-11-04T17:32:31.307 に答える