「NeoLua」の版間の差分

imported>Administrator
imported>Administrator
14行目: 14行目:
=== インストール ===
=== インストール ===
* [[NuGet]]からNeoLuaを入れろ。
* [[NuGet]]からNeoLuaを入れろ。
* 参照に「Microsoft.CSharp」を追加しろ。  ← これ重要
* 参照に「Microsoft.CSharp」を追加しろ。  ← これ重要(ダイナミック版を使う場合のみ必須)


=== ハロワ ===
=== ハロワ ===
まずは定番の[[ハロワ]]。NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのdynamic版である。CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとdynamic版になる。dynamic版は[[インテリセンス]]が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにdynamic版のdochunkは小文字だぞ。
まずは定番の[[ハロワ]]。NeoLuaには2種類の実行環境がある。頭の固い人向けの静的版と、ユルユルな人向けのダイナミック版である。CreateEnvironmentメソッドの戻り値の型を、「var」(型推論)にすると静的版に、「dynamic」にするとダイナミック版になる。ダイナミック版は[[インテリセンス]]が効かない諸刃の剣であるが、ある程度慣れると圧倒的にこちらの方が便利かつ簡潔明瞭である。ちなみにダイナミック版のdochunkは小文字だぞ。


こういう書き方もできる。
こういう書き方もできる。
79行目: 79行目:
             }
             }
</source>  
</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>


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