1

NLuaでLINQを使用できるかどうか疑問に思っていますか? プロジェクトのgithub pageを含むさまざまなソースを検索しましたが、うまくいきませんでした。次の最小限の C# の例を取得しました。

using (var lua = new Lua())
{
    lua.LoadCLRPackage();
    lua["data"] = new[] { 1, 2, 3, 4, 5 };
    var res = lua.DoFile(@"C:\..\MyLua.lua");
}

MyLua.lua次のようになります。

luanet.import_type('System.Linq')

-- syntax error near 'in'
res = from d in data where d > 2 select d

-- ')' expected near '='
res = data:Where(x => x > 2)

return res

実行すると、構文エラー (上記の lua スクリプトでコメントとして示されている) が NLua によって返されます。これが仕様によるものかどうかを知っておくとよいでしょう。そうであれば、NLua の将来のバージョンで LINQ がサポートされる予定はありますか?

4

1 に答える 1

2

LINQ は「言語統合クエリ」です。ここでは統合が重要です。つまり、C# 構文は、LINQ 構文とセマンティクスに準拠した構造をサポートしています。

NLua は Lua の構文 (セマンティクスは言うまでもなく) を変更しません。単に .NET ライブラリを Lua から利用できるようにし、C# から Lua スクリプトを実行しやすくし、2 つの言語間でデータを交換しやすくします。LINQ クエリが NLua でサポートされていないのは仕様によるものですか? まあ、ちょっと!設計上、NLua は Lua 構文を変更または拡張しません。

将来のバージョンでサポートされる予定はありますか? さて、どんな未来も非常に長い時間であり、誰が未来を予測できますか? 現在のメンテナーがノーと言ったとしても、彼らは数ヶ月以内にプロジェクトを中止することを決定し、これが素晴らしいアイデアであると判断した別の開発者に引き継がれる可能性があります. あなたの質問のその部分には答えがありません。

Lua から LINQ を使用できます。Lua に公開する C# 関数で LINQ クエリを作成し、Lua から呼び出します。確かに、これは悪くはありませんが、C# コードをコンパイルせずに Lua コードで LINQ を作成するという、おそらくやりたいことほど強力ではありません。これが可能だとは思いませんが、C# コードをオンザフライでコンパイルする方法があることを漠然と覚えていますが、夢を見ている可能性があります。

于 2013-12-04T03:03:33.553 に答える