<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=NeoLua%E3%81%AB.NET%E3%81%A7%E9%96%A2%E6%95%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B</id>
	<title>NeoLuaに.NETで関数を追加する - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=NeoLua%E3%81%AB.NET%E3%81%A7%E9%96%A2%E6%95%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=NeoLua%E3%81%AB.NET%E3%81%A7%E9%96%A2%E6%95%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B&amp;action=history"/>
	<updated>2026-06-04T16:12:37Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=NeoLua%E3%81%AB.NET%E3%81%A7%E9%96%A2%E6%95%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B&amp;diff=10378&amp;oldid=prev</id>
		<title>imported&gt;Administrator: ページの作成:「 NeoLuaではLuaスクリプトでfunction構文を使って関数を書く方法だけでなく、C#で書いた関数を追加することもできる。NeoLuaではLua...」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=NeoLua%E3%81%AB.NET%E3%81%A7%E9%96%A2%E6%95%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B&amp;diff=10378&amp;oldid=prev"/>
		<updated>2018-10-22T02:28:59Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「 NeoLuaではLuaスクリプトでfunction構文を使って関数を書く方法だけでなく、C#で書いた関数を追加することもできる。NeoLuaではLua...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
NeoLuaではLuaスクリプトでfunction構文を使って関数を書く方法だけでなく、C#で書いた関数を追加することもできる。NeoLuaではLua標準ライブラリの「os名前空間」が未実装だったりするので、日付・時間などを扱おうと思う場合は、この方法で実装すれば綺麗に決まる。Lua側からclr名前空間を叩いて実装する方法もあるがあんまり綺麗じゃない。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
            using (var lua = new Lua())&lt;br /&gt;
            {&lt;br /&gt;
                var env = lua.CreateEnvironment();&lt;br /&gt;
&lt;br /&gt;
                // C#で書かれたadd関数を追加&lt;br /&gt;
                env.Add(&amp;quot;add&amp;quot;, new Func&amp;lt;int,int,int&amp;gt;((a,b) =&amp;gt; a+b));&lt;br /&gt;
&lt;br /&gt;
                // Lua側から呼び出してみる&lt;br /&gt;
                var ret = env.DoChunk(@&amp;quot;return add(1,2)&amp;quot;, &amp;quot;main.lua&amp;quot;);&lt;br /&gt;
                Console.WriteLine(ret);&lt;br /&gt;
            }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ちなみにdynamic版の場合だと更に簡潔明瞭。.NETのFunc型をそのままブチ込める。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
            using (var lua = new Lua())&lt;br /&gt;
            {&lt;br /&gt;
                var env = lua.CreateEnvironment();&lt;br /&gt;
&lt;br /&gt;
                // C#で書かれたadd関数を追加&lt;br /&gt;
                env.add = new Func&amp;lt;int,int,int&amp;gt;((a,b) =&amp;gt; a+b);&lt;br /&gt;
            }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[NeoLuaに.NETでクラスを追加する]]&lt;br /&gt;
&lt;br /&gt;
[[category: NeoLua]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Administrator</name></author>
	</entry>
</feed>