トップページtech
1002コメント341KB

【Lua】組み込み系言語総合 その6【Squirrel】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/03/10(日) 15:10:32.28
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
0609デフォルトの名無しさん2015/01/04(日) 06:44:30.95ID:FkvmMkr7
RCでの更新はコンパイル警告を無くした、とかばっかり。 安定してるんじゃないかな。
新C-APIの lua_rotate() が地味に便利。
0610デフォルトの名無しさん2015/01/04(日) 08:29:47.65ID:LjhOLja4
>>606
>>559
0611デフォルトの名無しさん2015/01/08(木) 07:02:44.50ID:HB0/eqgI
Lua 5.3.0 (rc4) released Happy New Year!
0612デフォルトの名無しさん2015/01/13(火) 08:21:09.63ID:rG5Z7jyu
Lua 5.3.0 released ? Happy New Year!
0613デフォルトの名無しさん2015/01/14(水) 08:19:11.90ID:G/8s1bPT
おめでとうございます。
0614デフォルトの名無しさん2015/01/19(月) 13:17:04.98ID:i0MAuzuq
Windows系なら JsRT でブラウザ無しの js が使えるな。 node.js でもいいけどさ。
組み込みも js で十分な気がしてきた。
0615デフォルトの名無しさん2015/01/19(月) 19:23:58.96ID:ax3bxEw/
JsRTではどうやってCからスクリプト内の変数とか操作するの?
0616デフォルトの名無しさん2015/01/19(月) 20:11:10.33ID:i0MAuzuq
node.js と比べるのはおかしいな。比べるなら v8 単体か。

>>615
ハンドル (voidポインタ) 経由。 グローバル変数のテーブルもCから操作できる。
API は v8 と似ているけど、さらに簡略化されている感じ。
Luaとは違ってスタック操作を意識する必要は無い。 Cスタックを舐める系のGCっぽい。
C関数や、生データをファイナライザ付きでスクリプトに登録もできるし、
スクリプトの変数をCからキープしたいときの AddRef() もある。

後発なだけあって、いい感じに整理されているように見えるよ。
0617デフォルトの名無しさん2015/01/19(月) 22:22:42.69ID:XVOLeUIA
スタック操作は不要で参照カウントは必要という案は何回も聞いた
みんなLuaと比較した情報は出すけど何個もある代案同士で比較した情報がまだ出ない
だからまだ時期が悪いかなと思う
0618デフォルトの名無しさん2015/01/20(火) 06:19:15.63ID:MIZOkYTq
スタック操作は覚えることが少ないから習得が早くて便利だけどね
0619デフォルトの名無しさん2015/01/20(火) 07:11:39.79ID:Qwim/1/Y
LuaのC APIへの不満って、スタック操作と、スクリプトオブジェクトの寿命延長 (luaL_ref)
の2つが大きいいんじゃないの? 止められるんなら止めたいでしょ。
もちろん、Luaはスタック操作が明示的だからこそ、移植性が高いんだけど。

>>617
参照カウントはあくまでCからのキープ用で、スクリプト内だけならマーク&スイープ系のGCのはず。
0620デフォルトの名無しさん2015/01/20(火) 17:48:36.34ID:MIZOkYTq
奇しくも自分で述べてるように、
スクリプト側からは死んでるようにみえる値を
C側では使ってるから生きてるよ、ということにするには
参照カウントよりもLuaL_refの方が考え方として分かりやすいと思うけど。
0621デフォルトの名無しさん2015/01/20(火) 18:44:09.44ID:GWZYH+JO
スクリプトオブジェクトの寿命延長って?

Luaは知らないけど
V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている

だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない

関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
0622デフォルトの名無しさん2015/01/20(火) 18:56:01.81ID:MIZOkYTq
いや、つまり嫌いと思う人は嫌い、好きと思う人は好きというだけの話。
0623デフォルトの名無しさん2015/01/20(火) 19:33:29.39ID:Qwim/1/Y
確かに大した差ではなかったな。
自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、
気になるならラッパーを一枚噛ませば十分だしな。
0624デフォルトの名無しさん2015/01/22(木) 18:40:30.34ID:dZXZ9W3g
整数型がデフォルトになったからより速くなったな
0625デフォルトの名無しさん2015/01/22(木) 19:34:31.74ID:QfKlzsaM
JsRTで遊んでみているが、
IDispatchをVARIANT経由でJavaScript側に公開できることがわかった。
COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。

なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。
無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。

悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
0626デフォルトの名無しさん2015/01/26(月) 19:41:40.28ID:+446Cocf
Squirrel 3.0.7 stable
Squirrel 3.1 RC1
Released January 10, 2015

さっき気付いた。
0627デフォルトの名無しさん2015/01/26(月) 20:46:44.47ID:5nfZyfP4
lua5.3の日本語マヌエルマダー?
0628デフォルトの名無しさん2015/01/26(月) 21:34:59.26ID:Sajs+zmm
言い出しっぺの法則
0629デフォルトの名無しさん2015/01/28(水) 05:31:27.96ID:SR5teQWH
俺が翻訳するかもしれないからあと100年くらい待ってくれ
0630デフォルトの名無しさん2015/01/28(水) 23:18:45.09ID:arg2MK+/
「日本語マニュアル出ないかなー」と言いながらずっと使ってるとそのうち英語でも普通に読めるようになって必要なくなる罠。
0631デフォルトの名無しさん2015/01/29(木) 08:12:30.79ID:FQssNh0T
5.3対応の書籍マダー?
0632デフォルトの名無しさん2015/01/29(木) 08:16:42.32ID:vMBFyrLx
「マニュアルだけじゃわからんなー」と言いながらずっとソースコードを読んでいるとそのうち先にソースにあたるようになって書籍が必要なくなる罠。
0633デフォルトの名無しさん2015/01/29(木) 08:43:48.85ID:FQssNh0T
それらで得た知識を書籍にして印税生活をするにだ
0634デフォルトの名無しさん2015/02/01(日) 00:18:48.30ID:ARaZzTfJ
android版のautotouch使い物にならんなあ
lua部分はともかく独自追加した所のデバッグやってるんだろうか
findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
0635デフォルトの名無しさん2015/02/03(火) 08:45:44.97ID:AqPQb7sP
このスレで既に紹介されたか知らないけど

ObjectScript
https://github.com/unitpoint/objectscript
http://objectscript.org/
http://www.codeproject.com/Articles/466907/ObjectScript-A-new-programming-language

Luaっぽい作りで構文はC/JavaScript系で、Squirrelとキャラが被ってる。
単純な整数計算ベンチの速度だと Lua : Squirrel : ObjectScript = 3 : 2 : 1 (遅い) くらい。
実行バイナリのサイズは Lua : Squirrel : ObjectScript = 2 : 3 : 4 (でかい) くらい。
安定性や採用事例はよくわかんない。ちなみにCachéとは何の関係も無い。
0636デフォルトの名無しさん2015/02/04(水) 06:17:03.56ID:Eqb0TJqD
CoreCLR がオープンソースになったけど簡単に組み込めたりするのかな
0637デフォルトの名無しさん2015/02/07(土) 10:47:45.90ID:3mcYxCt2
perlのkeysみたいなの 無いの?
0638デフォルトの名無しさん2015/02/07(土) 11:10:55.67ID:kuZAKFeA
>>637
Luaの話? いちおう組み込み系全般のスレなので……

標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない?
まぁ、自作しても for ループを廻せば済むけど。
- stdlib : http://lua-stdlib.github.io/lua-stdlib/modules/std.table.html#keys
- Underscore.lua : http://mirven.github.io/underscore.lua/#keys
0639デフォルトの名無しさん2015/02/08(日) 11:46:47.96ID:8cE0HyuH
Lua書く時のエディタって何使ってるの? Lightroomのプラグイン書きなんだけど。
0640デフォルトの名無しさん2015/02/08(日) 12:28:55.31ID:5UGjVIn5
http://lua-users.org/wiki/LuaIntegratedDevelopmentEnvironments
0641デフォルトの名無しさん2015/02/08(日) 17:36:40.20ID:zqGmBD5H
Intypeってのはどうなん?
0642デフォルトの名無しさん2015/02/16(月) 22:29:33.28ID:JBQ+Owrp
luaでファイル保存の時に日付.txtみたいに自動でするのはどうすればいいですか?
0643デフォルトの名無しさん2015/02/16(月) 22:40:47.19ID:yzFhOePD
>>642
Luaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
0644デフォルトの名無しさん2015/02/16(月) 23:48:51.20ID:JBQ+Owrp
出来ました、ありがとうございます。
0645デフォルトの名無しさん2015/02/19(木) 19:51:04.59ID:Qw0v9eHu
Luaって存在今日知った。
自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、
Luaってもう仕様安定してるの?
浮動小数点の実装はちゃんとバイナリ?
0646デフォルトの名無しさん2015/02/19(木) 20:22:48.55ID:YKDWyqEz
>>645
本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。

Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。
内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。

正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。
自分は C++ regex を使う別実装を自前で追加してる。
0647デフォルトの名無しさん2015/02/21(土) 12:07:52.58ID:ftMcKIol
>>646
ありがとう。
awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。
ちょっと活用を検討してみます。
0648デフォルトの名無しさん2015/02/23(月) 19:05:53.37ID:PUEtXCiM
AngelScript|Д`)<AngelScript2.30.0記念カキコ 
メモリ管理の改良とか、キャスト用メソッドの登録方法が変わったとか色々変更あるっぽい。
0649デフォルトの名無しさん2015/02/23(月) 23:12:44.33ID:2B41jSVI
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
0650sage2015/03/17(火) 22:57:10.71ID:yVREPXol
flashairいじってる人いる?
0651デフォルトの名無しさん2015/03/17(火) 23:14:59.23ID:Wb8shGuw
>>650
AS3は組み込めないだろ・・・
06526502015/03/17(火) 23:25:25.06ID:yVREPXol
まあまあ^^;

luaでio.writeでSDカードに書き込めるかと思いきやなんか挙動が怪しい・・
0653デフォルトの名無しさん2015/04/11(土) 22:52:38.83ID:L0A+zZu9
連想配列の要素数を返す関数(table.maxn)みたいなものってありますか?

tbl[]

tbl[ "a" ] = data1
tbl[ "b" ] = data2
tbl[ "c" ] = data3

#tblやtable.maxn(tbl)をやっても「0」が帰ってきてしまいます。
ハッシュの場合、格納されている要素数を返すものはないのですかね
ざっと検索して調べた感じそれっぽいのはありませんでした
0654デフォルトの名無しさん2015/04/11(土) 22:59:40.53ID:L0A+zZu9
table.maxn(tbl)
テーブルtblの持つ要素のキーのうち、正の数値(FIXNUM)であるものの中で最大のものを返します。
tblが正の数値(FIXNUM)のキーの要素を持たない場合は0を返します。

ってかかれてるからpairsで回して数取得するようなやり方しかないかもなあ・・。
0655デフォルトの名無しさん2015/04/11(土) 23:05:44.47ID:L0A+zZu9
とりあえずこんなかんじで回避することにしました
何か他により良いやり方があれば教えて下さい

function get_hash_count( hash )
local cnt = 0

for key, value in pairs(hash) do
cnt = cnt + 1
end

return cnt
end
0656デフォルトの名無しさん2015/04/12(日) 00:40:05.35ID:eLW2DJDr
>>655
それが一番速いと思います
luaのテーブルは厳密な要素数を追跡してないのよ
値をスカスカに配置して列挙時に存在チェックする
0657デフォルトの名無しさん2015/04/12(日) 02:22:26.48ID:ubi9S/wo
>>656
ありがとうございます
luaの仕様的に他に良い方法はないのですね
0658デフォルトの名無しさん2015/04/25(土) 21:53:05.10ID:udlJJGWW
>>1
組み込み系言語ってファームウェア用かと思ったwww
0659デフォルトの名無しさん2015/04/27(月) 08:43:41.87ID:9sNRGOg0
質問失礼します。
ソフトにLuaを組み込んでユーザーにLuaスクリプトを作ってもらおうと思っています。
そのLuaスクリプトを他のユーザーにばらまかれるとセキュリティ上危なくなるので困っています。
Luaで書けるファイルIOやネット上のダウンロードなど、危なそうな機能だけ無効化したいのですが可能でしょうか?
分かる方、よろしくお願いします。
0660デフォルトの名無しさん2015/04/27(月) 09:18:48.10ID:18wKNGsP
>>659
・不必要な標準モジュールは組み込まない。
・モジュールの中に不必要な関数がある場合は同名の関数を作ってオーバーライドしてしまう。
0661デフォルトの名無しさん2015/04/27(月) 09:20:47.53ID:18wKNGsP
同名の関数を作る、というよりファンクション型の変数に代入し直すというのが正しいか
0662デフォルトの名無しさん2015/04/27(月) 11:51:04.49ID:RhUk/Sb2
io系 file系 debug系、os.systemなどをlua本体のソースから外す。

requireのうち、c系dll読み込みも外す。
0663デフォルトの名無しさん2015/04/27(月) 14:01:37.37ID:9sNRGOg0
>>660
>>662
塞ぎ忘れたらとんでもない事になりそうですね。。。
がんばってみます。
ありがとうございました。
0664デフォルトの名無しさん2015/04/27(月) 18:39:19.42ID:RhUk/Sb2
Luaは本体のcソースの段階で、追加したり削除されたりすることを念頭において
作られてるので、めちゃくちゃ簡単に追加や削除ができるよ。

やり始めたらあまりに簡単でびっくりするとおもう。

最悪上記の消したいlua関数のregisterの処理だけl***lib.c系からコメントアウトした上で、
luaインタプリタを本体アプリにスタティックリンクするだけで、それなりに仕組みを深く理解している人以外はイタズラしにくくなる。
0665デフォルトの名無しさん2015/04/27(月) 20:13:20.63ID:ByjLANN5
-- preload.lua
io = nil
...

とかを用意して
ユーザースクリプトを読む前にdofile
中身が決まったらdostringでハードコードする
ってのが簡単
0666デフォルトの名無しさん2015/04/27(月) 23:36:05.71ID:V1hm5/yh
5.2以降は意図的に読み込まないと標準ライブラリとは使えないよ。
Ubuntuとかはまだ5.1だったりするのかな
0667デフォルトの名無しさん2015/05/03(日) 17:51:04.86ID:R+xSVf6m
>>665
わざわざそんなことするより、読み込み部コメントアウトした方が
簡単だろw
モジュール単位、関数単位で、1行ずつ「追加・削除はご自由に」って
感じで全部列挙されてんだから。
0668デフォルトの名無しさん2015/05/03(日) 18:10:07.04ID:IVZoCitV
殺したい関数型変数に新しい関数を代入するだけだってばさ。
何でわざわざ改造せねばならんの?
0669デフォルトの名無しさん2015/05/03(日) 18:16:54.02ID:hj7OiJXS
まあまあ
Lua処理系を勝手に改造できる(してもいい)環境でないとそもそもできないね
0670デフォルトの名無しさん2015/05/04(月) 07:02:11.02ID:Sl6NKpln
lua処理系を全く改造しないって無理がないかなぁ?

exit とかが数箇所入ってる時点で
組み込みで等でコンパイル済ライブラリを
そのまま使うのは怖すぎると思う。
0671デフォルトの名無しさん2015/05/04(月) 07:28:47.12ID:ZL3JUBSp
改造前提だろう
requireもマルチバイト文字を含むパスを扱えないし (win環境)
本体と比べてライブラリの品質は良くない
0672デフォルトの名無しさん2015/05/04(月) 07:51:01.81ID:sbqo/+Tp
混乱するので659への回答と他の話題は分けていただけると助かります
0673デフォルトの名無しさん2015/05/04(月) 08:38:47.22ID:Sl6NKpln
>>672
だから、
ソースとか全部自由になるのなら、ベストはC層で
・不要なライブラリのロードを消す。
・package.cpath を消す。 or requre 自体不要なら消す。
・ソースから本体アプリにLuaごろスタティックリンク

これがデフォルトよりサイズも小さくスピードもアップする上に、
いたずらの可能性も限りなく0

LuaでnilにしたのをCへdostringで=といったのは、
一部を手抜きで代替するという案であって
決してベストなものではない。
スピードが遅くなったり実行ファイルにゴミは残るが、
そういう手の抜き方もあるよ、という話。
0674デフォルトの名無しさん2015/05/04(月) 22:44:21.04ID:qi4175C9
autotouchhでゲームのリセマラマクロ作ってるんですけど
iosのアプリ固有ID?
//var/mobile/Containers/Data/Application/********/Documents
の********の部分の取得方法がわからなくて困ってます。

プログラミング自体初心者で一月ほど調べてるけどよくわからない言葉だらけで・・・
何かアドバイスくださいm(__)m
0675デフォルトの名無しさん2015/05/04(月) 23:07:02.98ID:8Z+6LqT8
お前向いてないからもうやめとけ
0676デフォルトの名無しさん2015/05/04(月) 23:17:09.78ID:qi4175C9
そんなに簡単なんですか・・・
すみません・・・
最後に是非教えてください
0677デフォルトの名無しさん2015/05/05(火) 12:42:12.67ID:KszErmBE
AppInfoってアプリ入れてみ
これでわかんなかったら本当にやめろ
06786742015/05/06(水) 08:00:28.72ID:uYsfVS/M
いや、調べ方はわかるんです、コードでどうすればいいかがわからないんです。
マクロ自体は完成しているんですが、アップデートとかのたびに変わるみたいで
手作業で書き直してるんでそれをどうにかできればなと......
0679デフォルトの名無しさん2015/05/06(水) 11:08:53.11ID:/KG0Gdz0
ios固有なのか、そのアプリ固有なのか、
luaに依存する処理なのか?
なんとなくスレ違いの部分で悩んでいる感がある
文字列やファイルの処理ではないんだろ?
0680デフォルトの名無しさん2015/05/06(水) 11:18:37.36ID:iq3C3Ifp
>>678
http://qiita.com/fuhi1983/items/342b82f3222483697e8e
これじゃねーの?
0681デフォルトの名無しさん2015/05/06(水) 14:09:18.09ID:Om2we3tL
>>678
そのフォルダ名はアプリの構成かわるときにランダムに決定されるので、そのアプリ自身以外からは基本的には特定できない仕組みになってる

Data/Application/*** の下に、なにかしらアプリを特定できるような情報が入ったファイル(たぶんInfo.plistとか)があるだろうから、それを全部探索して読み込んで目的のアプリを探す、以外の方法は無い
0682デフォルトの名無しさん2015/05/06(水) 15:34:43.00ID:uYsfVS/M
>>681
そうなんですね、ありがとうございます。
どこかに情報ないかといろんなファイルをtextで開いてたのですが見つからないはずですね
ありがとうございました。
0683デフォルトの名無しさん2015/05/16(土) 00:11:08.39ID:yj1J+1ps
定義したあるテーブルのメソッド一覧を取得することはできますか?

player = {}

function player:Attack()
end

function player:Jump()
end

上記のような定義があり、
"Attack"と"Jump"のキーとその関数をペアで取得したいのですが
0684デフォルトの名無しさん2015/05/16(土) 00:33:56.90ID:nBVK7qH/
Lua自体にはメソッドという分別は無いので関数かどうかで判断するだけだな

for k,v in piars(player) do
if type(v) == "function" then
printf(k, v)
end
end
0685デフォルトの名無しさん2015/05/16(土) 00:48:49.46ID:yj1J+1ps
お〜
できました〜
かゆいところにきちんと手が届いてくれていい言語ですねぇコレ
ありがとうございます。
0686デフォルトの名無しさん2015/05/18(月) 06:50:19.69ID:QWumnvsF
すう様はきちんと考えながら英語を喋ってるよ。
あれはカンペとかじゃない。
0687デフォルトの名無しさん2015/05/19(火) 14:34:42.08ID:dht99EFe
Luaで悩んでいます。ご教示お願いいたします。
下記のようなテキストの入った複数の配列があり、

tbl01={"a","b","c"}
tbl02={"d","e","f"}
tbl03...

ストリング型のstrという変数に"tbl"という文字列が入っています。
やりたいことは、文字列型の値を何とか加工してtblの要素にアクセスしたいんです。

str[1]

とするとエラーが出ますし・・・(まあそうですよね)
強引にtable型に型変換できないかな?とか悩んでいます。
文字列しか受け取れない場合、複数ある配列にアクセスするには
どのようにすればよろしいでしょうか?

詳しい方教えてください。お願いします!
06886872015/05/19(火) 14:37:23.12ID:dht99EFe
↑すみません、間違えました。
strの中に入っている文字列は"tbl"ではなく"tbl01"としています。
いずれにせよ無理ですが…
0689デフォルトの名無しさん2015/05/19(火) 16:19:59.83ID:Nw+B6083
>>687
string.sub() or .byte()
1文字ずつ処理するのはC系に比べて苦手。
代わりに正規表現が使えないか要検討。
0690デフォルトの名無しさん2015/05/19(火) 16:23:48.21ID:26zc2bnI
微妙にエスパー能力が必要な質問だが、こういうことけ?

local function getTableByName(name)
 local tables = {
  tbl01 = {'a', 'b', 'c'},
  tbl02 = {'d', 'e', 'f'},
 }
 return tables[name]
end

local str = 'tbl01'
local t = getTableByName(str)

print(t[1])
0691デフォルトの名無しさん2015/05/19(火) 16:28:09.88ID:Nw+B6083
>>687
違うな。質問の意図を取り違えていたかも?
str[1]の代わりになるのは >>689 だが、
元々の目的が「変数に入っている変数名を経由したアクセスがしたい」ならば _G を使う:
str = "tbl01"
assert(_G[str] == tbl01)

tbl01 等がグローバル変数、ローカル変数、他テーブルの要素で処理が違うものになるから、これでダメならまた聞いてくれ。
0692デフォルトの名無しさん2015/05/19(火) 22:19:05.65ID:dht99EFe
>>689
>>690
お二方、ありがとうございます!
エスパーみたいな質問になってしまいましたね。すみません。
実現したいことの詳細をより細かく記載します。どうしても実現したいので。もう3日悩んでます。

ゲームを制作しています。
ゲームエンジンからluaを呼んでluaで処理させることができるのですが、
ゲームエンジンの仕様でlua側に渡せる値が文字列のみです。

luaで何をしたいかというと、上記のように大量にテーブルを作って中身も代入しておきます。
すべて文字列のデータです。

ゲームエンジン側から@文字列Aテーブル名の二つの値を渡します。(もちろん両方文字列でしか渡せません)
その二つの値がlua側に渡ったら、Aを使ってテーブルを探し、@を使ってそのテーブルの中に
@と同じ文字列があるか比較します。

文字列があったら1を返して、なかったら2を返す…ということを実現したいのです。

>>687の例で行くと、ゲームエンジンから@"a"とAtbl01をもらって、lua側のtbl01をforで回して
探していけばいいや…と思っていました。しかし、
strにtbl01が入っていたとして、

for i=1 , table.maxn(str) , 1 do

…なんてことをすると、文字列なのでエラーが返ってきますorz
いろいろ試してみてstr[i]なんてことまでやってみる始末。もちろん動かないですが。
そもそもluaって動的に型を決めてくれるので明示的にこちらから「こいつはtable型だよ!」
って指定できないんですね。(java使っている者でして…)

説明不足なら捕捉します。後出し申し訳ありません。何卒よろしくお願いいたします。
0693デフォルトの名無しさん2015/05/19(火) 22:35:28.81ID:UWcSl4nD
>>692
table型だよって指示できないもなにも、変数strの中身はあくまでstringなんだから、Javaで同じことやる場合でもHashTableかなんか使うよね?
つまり、>>691 がやりたいことなんじゃないの?
table.maxn(_G[str]) でできると思うよ
0694デフォルトの名無しさん2015/05/19(火) 23:29:17.09ID:dht99EFe
>>693
やりました!!!
要素にアクセスできましたーー!

そのまま文字列一致の判定をして、フラグ1が返ってきました。
これでゲームの核の部分が作れました。

そもそも_Gの使い方を間違ってました…
しかしLuaって色々弄って思ったのですが想像以上に柔軟なんですね。

お三方、親身に教えてくださってありがとうございます。
0695デフォルトの名無しさん2015/05/25(月) 21:08:36.02ID:sCH5oSB/
質問失礼します。
OSX 64bit Unity という環境で Lua を使用しています。
Windowsでは正常に動くのですが、OSX 64bit で動かすと LuaDLL.luaL_newstate(); で null が返ってきて困っています。
パッケージを見ると Mac (x86 only) と明記してありました。
OSX 64bit でも動かしたいのですが、どうやれば良いでしょうか?
0696デフォルトの名無しさん2015/05/25(月) 21:17:17.45ID:WFHyWYJ8
64bitなdllを別途準備しないとダメじゃね?
06976952015/05/25(月) 21:18:45.04ID:sCH5oSB/
>>696
そうですよね。。。
makeは通ったんで、頑張ってみます!
06986952015/05/28(木) 19:45:28.97ID:52beXCpy
詰まりました。。。
LuaJIT-2.0.2を利用しているのですが、OSX用のuniversal binaryで出力する方法が分かりません。
Luaの速さに全体重を乗っけてるんで、今更別の言語への切り替え等は考えられません。
分かる方、ぜひ教えてください。
0699デフォルトの名無しさん2015/05/29(金) 01:55:02.89ID:p/ahFCvT
個々にビルドした場合はlipoというツールで合体させるらしい?
https://www.google.co.jp/search?q=lipo+universal+binary
0700デフォルトの名無しさん2015/05/29(金) 02:07:51.90ID:p/ahFCvT
luajitではなく、luaならhomebrewとかみるとuniversalのオプションがあるね。
brew install lua --universal

>695も根が深そうな。。。
https://www.google.co.jp/search?q=luaL_newstate+64bit
https://gist.github.com/nddrylliog/8722197
0701デフォルトの名無しさん2015/05/29(金) 02:13:23.25ID:p/ahFCvT
とおもったけど、普通に64bitになっていた。
https://github.com/Homebrew/homebrew/blob/master/Library/Formula/luajit.rb

$ lipo -info /usr/local/opt/luajit/bin/luajit
Non-fat file: /usr/local/opt/luajit/bin/luajit is architecture: x86_64
0702デフォルトの名無しさん2015/05/29(金) 09:55:09.44ID:2a3TZL/2
>>699-701
ありがとうございます!
LuaJITの32bit版ライブラリと64bit版ライブラリを出力して、lipoというソフトで合体という事ですよね?
試行錯誤してみます!
07036952015/05/29(金) 15:29:21.86ID:2a3TZL/2
>>695も根が深そうな。。。
まさにコレでした。
問題は2つあったんですね。
もうお手上げです。
とりあえず勉強になりました。
ありがとうございました。
07046952015/05/30(土) 02:16:04.85ID:WJHjPFg2
ちょっとレスにミスったんで、訂正

>>700
>695も根が深そうな。。。
↑まさにコレでした。
0705デフォルトの名無しさん2015/09/14(月) 16:28:17.35ID:SxkHJw7D
最新のsnes9xでluaを読み込む方法を教えてください

http://pastebin.com/nBuJChc9を動作させたいです
0706デフォルトの名無しさん2015/09/30(水) 15:13:43.25ID:gLrxUsPl
Nekoって一応プログラミング言語だったのか
Haxeのプログラムを動かすVMとだけ思ってた

https://en.wikipedia.org/wiki/Neko_(programming_language)
0707デフォルトの名無しさん2015/09/30(水) 15:57:26.40ID:2TkwnPLU
新進気鋭のプログラミング言語「Neko」ってなに?
http://news.mynavi.jp/articles/2007/08/06/neko/
0708デフォルトの名無しさん2015/10/06(火) 22:32:11.35ID:uxUTfTFS
受ける会社大丈夫?
下記の条件が全て当てはまる会社にご注意下さい。

・IT系 in tokyo
・「社名 労基」でググると過去の2chスレが出てくる
・転職会議で2.5点
0709デフォルトの名無しさん2015/10/21(水) 00:53:22.02ID:Kl04gCQo
Ravi

https://github.com/dibyendumajumdar/ravi

lua5.3互換、静的型付け追加、jit
■ このスレッドは過去ログ倉庫に格納されています