差分
ナビゲーションに移動
検索に移動
== インストール ==
* [[NuGet]]から[[NeoLua]]を入れろ。
* 参照に「Microsoft.CSharp」を追加しろ。 ← これ重要(ダイナミック版を使う場合のみ必須)
== ハロワ ==
まずは定番の[[ハロワ]]だ。
NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのダイナミック版だ。
CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとダイナミック版になる。ダイナミック版は[[インテリセンス]]が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにダイナミック版のdochunkは小文字だぞ。
こういう書き方もできる。
「clr」で標準の名前空間にもアクセスできる。
<source lang="csharp">
using (var lua = new Lua())
{
dynamic g = lua.CreateEnvironment();
g.dochunk(@"
s = 'hello world';
clr.System.Console.WriteLine(s);
");
}
</source>
dynamic変数を使わない方法だとSetMemberValue()だのCallMember()などのメソッドを使う。
この場合のDoChunkは[[パスカル記法]]だ。
ついでにまったく関係ないことだがLuaでの文字列連結は「..」だ。
<source lang="csharp">
using (var lua = new Lua())
{
var env = lua.CreateEnvironment();
env.DoChunk(@"
name = 'foo';
function Hello()
return 'hello ' .. name;
end
","test.lua");
var ret1 = env.CallMember("Hello");
Console.WriteLine(ret1.ToString());
env.SetMemberValue("name", "bar");
var ret2 = env.CallMember("Hello");
Console.WriteLine(ret2.ToString());
}
</source>
[[category: NeoLua]]
* [[NuGet]]から[[NeoLua]]を入れろ。
* 参照に「Microsoft.CSharp」を追加しろ。 ← これ重要(ダイナミック版を使う場合のみ必須)
== ハロワ ==
まずは定番の[[ハロワ]]だ。
NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのダイナミック版だ。
CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとダイナミック版になる。ダイナミック版は[[インテリセンス]]が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにダイナミック版のdochunkは小文字だぞ。
こういう書き方もできる。
「clr」で標準の名前空間にもアクセスできる。
<source lang="csharp">
using (var lua = new Lua())
{
dynamic g = lua.CreateEnvironment();
g.dochunk(@"
s = 'hello world';
clr.System.Console.WriteLine(s);
");
}
</source>
dynamic変数を使わない方法だとSetMemberValue()だのCallMember()などのメソッドを使う。
この場合のDoChunkは[[パスカル記法]]だ。
ついでにまったく関係ないことだがLuaでの文字列連結は「..」だ。
<source lang="csharp">
using (var lua = new Lua())
{
var env = lua.CreateEnvironment();
env.DoChunk(@"
name = 'foo';
function Hello()
return 'hello ' .. name;
end
","test.lua");
var ret1 = env.CallMember("Hello");
Console.WriteLine(ret1.ToString());
env.SetMemberValue("name", "bar");
var ret2 = env.CallMember("Hello");
Console.WriteLine(ret2.ToString());
}
</source>
[[category: NeoLua]]