差分
ナビゲーションに移動
検索に移動
NeoLua
,=== インストール ===
* [[NuGet]]からNeoLuaを入れろ。
* 参照に「Microsoft.CSharp」を追加しろ。 ← これ重要← これ重要(ダイナミック版を使う場合のみ必須)
=== ハロワ ===
まずは定番の[[ハロワ]]。NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのdynamic版である。CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとdynamic版になる。dynamic版は。NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのダイナミック版である。CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとダイナミック版になる。ダイナミック版は[[インテリセンス]]が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにdynamic版のdochunkは小文字だぞ。が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにダイナミック版のdochunkは小文字だぞ。
こういう書き方もできる。
}
</source>
=== C#でクラスを追加する ===
前述のC#で関数を追加する方法と同じ要領でクラスも追加できる。<syntaxhighlight lang="csharp">
class MainClass
{
public static void Main(string[] args)
{
using (var lua = new Lua())
{
var env = lua.CreateEnvironment();
// C#で書かれたfooオブジェクトを追加
env.Add("foo", new Foo());
// Lua側から呼び出してみる
var ret = env.DoChunk(@"return foo:ticks()", "main.lua");
Console.WriteLine(ret);
}
}
}
class Foo
{
public long ticks()
{
return DateTime.Now.Ticks;
}
}
</syntaxhighlight>
== 外部リンク ==