「NeoLua」の版間の差分

imported>Administrator
編集の要約なし
imported>Administrator
17行目: 17行目:


=== ハロワ ===
=== ハロワ ===
まずは定番の[[ハロワ]]。dynamic変数にしておくとLua内のオブジェクトに直接手出しすることができる。[[インテリセンス]]が効かない諸刃の剣でもある。
まずは定番の[[ハロワ]]。NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのdynamic版である。CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとdynamic版になる。dynamic版は[[インテリセンス]]が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにdynamic版のdochunkは小文字だぞ。
dochunkは小文字だぞ。
<source lang="csharp">
            using (var lua = new Lua())
            {
                dynamic g = lua.CreateEnvironment();
                g.dochunk("s = 'hello world';","test");
                Console.WriteLine(g.s);
            }
</source>


こういう書き方もできる。
こういう書き方もできる。
65行目: 56行目:


=== C#で関数を追加する ===
=== C#で関数を追加する ===
Luaでfunctionを書く方法だけでなく、C#で関数を追加することもできる。
NeoLuaではLuaでfunctionを書く方法だけでなくC#で関数を追加することもできる。NeoLuaではLua標準ライブラリの「os名前空間」が未実装だったりするので、日付・時間などを扱おうと思う場合は、この方法で実装すれば綺麗に決まる。Lua側からclr名前空間を叩いて実装する方法もあるがあんまり綺麗じゃない。<source>
<source>
             using (var lua = new Lua())
             using (var lua = new Lua())
             {
             {
80行目: 70行目:
</source>
</source>


dynamic版の場合だと更に簡潔明瞭。
ちなみにdynamic版の場合だと更に簡潔明瞭。<source>
<source>
             using (var lua = new Lua())
             using (var lua = new Lua())
             {
             {
89行目: 78行目:
                 env.add = new Func<int,int,int>((a,b) => a+b);
                 env.add = new Func<int,int,int>((a,b) => a+b);
             }
             }
</source>
</source>  
 
== 関連項目 ==


== 外部リンク ==
== 外部リンク ==