差分

ナビゲーションに移動 検索に移動

NeoLua

112 バイト追加, 2018年10月22日 (月) 01:32
編集の要約なし
'''NeoLua'''とは、[[オープンソース]]の下で[[開発]]されている[[.NET Framework]]向けの向けの「ピュア」な[[Lua]]実装である。
== 概要 ==
[[.NET Framework]]向けの[[Lua]]実装は多数存在するが、それらは本家Luaの[[DLL]]を[[P/Invoke]]で呼び出すものが多い。これらは[[C言語]]で書かれた環境依存しまくりの[[ネイティブコード]]を呼び出している関係でXamarin環境やLinux上のMono環境では動かないことが多い。を呼び出している関係で[[Xamarin]]環境や[[Linux]]上の[[Mono]]環境では動かないことが多い。
一方、NeoLuaは.NET向けに移植された[[CLR]]でのピュア実装となっている。つまり[[IronPython]]などと同じ系列である。表向きの名前はNeoLuaであるが内部的な名前空間は「Neo.IronLua」となっており、やはり「Iron〜」である。さらにNeoLuaは[[Portable Class Library]]([[PCL]])環境でも何も考えずに一発で動くように作られている点がポイント高い。[[Xamarin]]系、[[MonoGame]]系では大活躍である。
=== C#で関数を追加する ===
NeoLuaではLuaでfunctionを書く方法だけでなくCNeoLuaではLuaで関数を書く方法だけでなくC#で関数を追加することもできる。NeoLuaではLua標準ライブラリの「os名前空間」が未実装だったりするので、日付・時間などを扱おうと思う場合は、この方法で実装すれば綺麗に決まる。Lua側からclr名前空間を叩いて実装する方法もあるがあんまり綺麗じゃない。<sourcelang="csharp">
using (var lua = new Lua())
{
</source>
ちなみにdynamic版の場合だと更に簡潔明瞭。ちなみにdynamic版の場合だと更に簡潔明瞭。C#のFunc<>メソッドをそのままブチ込める。<sourcelang="csharp">
using (var lua = new Lua())
{
匿名利用者

案内メニュー