提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
[[ComputerCraft_API|ComputerCraft API]] > | [[ComputerCraft_API|ComputerCraft API]] > | ||
+ | {{Stb}} | ||
{{前提MOD|reqmod="Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.65~"}} | {{前提MOD|reqmod="Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.65~"}} | ||
8行目: | 9行目: | ||
=== ソースコード === | === ソースコード === | ||
− | 「 | + | 「[[ComputerCraft_API/周辺機器の追加|周辺機器の追加]]」のソースコードを元にして、変更部分のみを解説します。 |
*TileSamplePeripheral.java | *TileSamplePeripheral.java | ||
140行目: | 141行目: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Lua⇔Javaでの型変換 | |+Lua⇔Javaでの型変換 | ||
− | !colspan="2"|引数 | + | !colspan="2"|引数 |
− | !colspan="2"|戻り値 | + | !colspan="2"|戻り値 |
|- | |- | ||
!Lua | !Lua | ||
155行目: | 156行目: | ||
|number | |number | ||
|Double | |Double | ||
− | | | + | |Integer<br>Float<br>Double |
|number | |number | ||
|- | |- | ||
166行目: | 167行目: | ||
|HashMap | |HashMap | ||
|HashMap | |HashMap | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|table | |table | ||
|- | |- | ||
179行目: | 175行目: | ||
|} | |} | ||
− | + | Luaのtable型はJava側ではHashMap<Object, Object>になります。キーおよび値の型もそれぞれ上表に従って変換されます。<br> | |
Luaのtableを使った配列は1オリジンです。キー0に値を代入することは可能ですが、キー0はLuaのipairs()や#演算子の対象にはなりません。 | Luaのtableを使った配列は1オリジンです。キー0に値を代入することは可能ですが、キー0はLuaのipairs()や#演算子の対象にはなりません。 | ||
==== 例外 LuaException ==== | ==== 例外 LuaException ==== | ||
− | callMethod()の処理中で例外LuaExceptionをthrowすると、そこで'''処理を中止''' | + | callMethod()の処理中で例外LuaExceptionをthrowすると、そこで'''処理を中止'''してComputerやTurtleの画面にエラーメッセージを表示します。ComputerCraftの周辺機器では主にメソッドの引数の不備を指摘する時に用いられているようです。 |
<source lang = "java"> | <source lang = "java"> | ||
throw new LuaException("Expected argument"); | throw new LuaException("Expected argument"); | ||
</source> | </source> | ||
− | + | この例外が発生した場合、その時点でメソッドの処理は中止され、ComputerやTurtleの画面上には、<br> | |
<code style="color: red">'''lua:1: Expected argument'''</code><br> | <code style="color: red">'''lua:1: Expected argument'''</code><br> | ||
のように表示されます。表示されるフォーマットは、'''<code>プログラム名:行番号:内容</code>''' です。<br> | のように表示されます。表示されるフォーマットは、'''<code>プログラム名:行番号:内容</code>''' です。<br> | ||
195行目: | 191行目: | ||
''※今回のサンプルでは問題ありません'' | ''※今回のサンプルでは問題ありません'' | ||
− | callMethod()はComputerCraftのLuaスレッドから呼び出されているため、callMethod() | + | callMethod()はComputerCraftのLuaスレッドから呼び出されているため、callMethod()の処理中にMinecraftのスレッドからアクセスされる可能性のあるフィールドへアクセスすると、競合が発生する可能性があります。従って、そのような処理では適宜synchronizedなどで排他制御する必要があります。 |