- 1 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:10:32.28 .net]
- LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合 その5【Squirrel】 toro.2ch.net/test/read.cgi/tech/1321063450/ ■過去スレ その4 hibari.2ch.net/test/read.cgi/tech/1301414458/ その3 hibari.2ch.net/test/read.cgi/tech/1272643397/ その2 pc12.2ch.net/test/read.cgi/tech/1243210301/ その1 pc12.2ch.net/test/read.cgi/tech/1205208141/ プログラミング言語 Lua その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
- 621 名前:デフォルトの名無しさん mailto:sage [2015/01/13(火) 08:21:09.63 ID:rG5Z7jyu.net]
- Lua 5.3.0 released ? Happy New Year!
- 622 名前:デフォルトの名無しさん mailto:sage [2015/01/14(水) 08:19:11.90 ID:G/8s1bPT.net]
- おめでとうございます。
- 623 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 13:17:04.98 ID:i0MAuzuq.net]
- Windows系なら JsRT でブラウザ無しの js が使えるな。 node.js でもいいけどさ。
組み込みも js で十分な気がしてきた。
- 624 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 19:23:58.96 ID:ax3bxEw/.net]
- JsRTではどうやってCからスクリプト内の変数とか操作するの?
- 625 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 20:11:10.33 ID:i0MAuzuq.net]
- node.js と比べるのはおかしいな。比べるなら v8 単体か。
>>618 ハンドル (voidポインタ) 経由。 グローバル変数のテーブルもCから操作できる。 API は v8 と似ているけど、さらに簡略化されている感じ。 Luaとは違ってスタック操作を意識する必要は無い。 Cスタックを舐める系のGCっぽい。 C関数や、生データをファイナライザ付きでスクリプトに登録もできるし、 スクリプトの変数をCからキープしたいときの AddRef() もある。 後発なだけあって、いい感じに整理されているように見えるよ。
- 626 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 22:22:42.69 ID:XVOLeUIA.net]
- スタック操作は不要で参照カウントは必要という案は何回も聞いた
みんなLuaと比較した情報は出すけど何個もある代案同士で比較した情報がまだ出ない だからまだ時期が悪いかなと思う
- 627 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 06:19:15.63 ID:MIZOkYTq.net]
- スタック操作は覚えることが少ないから習得が早くて便利だけどね
- 628 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 07:11:39.79 ID:Qwim/1/Y.net]
- LuaのC APIへの不満って、スタック操作と、スクリプトオブジェクトの寿命延長 (luaL_ref)
の2つが大きいいんじゃないの? 止められるんなら止めたいでしょ。 もちろん、Luaはスタック操作が明示的だからこそ、移植性が高いんだけど。 >>620 参照カウントはあくまでCからのキープ用で、スクリプト内だけならマーク&スイープ系のGCのはず。
- 629 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 17:48:36.34 ID:MIZOkYTq.net]
- 奇しくも自分で述べてるように、
スクリプト側からは死んでるようにみえる値を C側では使ってるから生きてるよ、ということにするには 参照カウントよりもLuaL_refの方が考え方として分かりやすいと思うけど。
- 630 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 18:44:09.44 ID:GWZYH+JO.net]
- スクリプトオブジェクトの寿命延長って?
Luaは知らないけど V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない 関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
- 631 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 18:56:01.81 ID:MIZOkYTq.net]
- いや、つまり嫌いと思う人は嫌い、好きと思う人は好きというだけの話。
- 632 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 19:33:29.39 ID:Qwim/1/Y.net]
- 確かに大した差ではなかったな。
自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、 気になるならラッパーを一枚噛ませば十分だしな。
- 633 名前:デフォルトの名無しさん mailto:sage [2015/01/22(木) 18:40:30.34 ID:dZXZ9W3g.net]
- 整数型がデフォルトになったからより速くなったな
- 634 名前:デフォルトの名無しさん mailto:sage [2015/01/22(木) 19:34:31.74 ID:QfKlzsaM.net]
- JsRTで遊んでみているが、
IDispatchをVARIANT経由でJavaScript側に公開できることがわかった。 COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。 なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。 無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。 悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
- 635 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 19:41:40.28 ID:+446Cocf.net]
- Squirrel 3.0.7 stable
Squirrel 3.1 RC1 Released January 10, 2015 さっき気付いた。
- 636 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 20:46:44.47 ID:5nfZyfP4.net]
- lua5.3の日本語マヌエルマダー?
- 637 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 21:34:59.26 ID:Sajs+zmm.net]
- 言い出しっぺの法則
- 638 名前:デフォルトの名無しさん mailto:sage [2015/01/28(水) 05:31:27.96 ID:SR5teQWH.net]
- 俺が翻訳するかもしれないからあと100年くらい待ってくれ
- 639 名前:デフォルトの名無しさん mailto:sage [2015/01/28(水) 23:18:45.09 ID:arg2MK+/.net]
- 「日本語マニュアル出ないかなー」と言いながらずっと使ってるとそのうち英語でも普通に読めるようになって必要なくなる罠。
- 640 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 08:12:30.79 ID:FQssNh0T.net]
- 5.3対応の書籍マダー?
- 641 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 08:16:42.32 ID:vMBFyrLx.net]
- 「マニュアルだけじゃわからんなー」と言いながらずっとソースコードを読んでいるとそのうち先にソースにあたるようになって書籍が必要なくなる罠。
- 642 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 08:43:48.85 ID:FQssNh0T.net]
- それらで得た知識を書籍にして印税生活をするにだ
- 643 名前:デフォルトの名無しさん mailto:sage [2015/02/01(日) 00:18:48.30 ID:ARaZzTfJ.net]
- android版のautotouch使い物にならんなあ
lua部分はともかく独自追加した所のデバッグやってるんだろうか findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
- 644 名前:デフォルトの名無しさん mailto:sage [2015/02/03(火) 08:45:44.97 ID:AqPQb7sP.net]
- このスレで既に紹介されたか知らないけど
ObjectScript https://github.com/unitpoint/objectscript objectscript.org/ 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éとは何の関係も無い。
- 645 名前:デフォルトの名無しさん mailto:sage [2015/02/04(水) 06:17:03.56 ID:Eqb0TJqD.net]
- CoreCLR がオープンソースになったけど簡単に組み込めたりするのかな
- 646 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 10:47:45.90 ID:3mcYxCt2.net]
- perlのkeysみたいなの 無いの?
- 647 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 11:10:55.67 ID:kuZAKFeA.net]
- >>640
Luaの話? いちおう組み込み系全般のスレなので…… 標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない? まぁ、自作しても for ループを廻せば済むけど。 - stdlib : lua-stdlib.github.io/lua-stdlib/modules/std.table.html#keys - Underscore.lua : mirven.github.io/underscore.lua/#keys
- 648 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 11:46:47.96 ID:8cE0HyuH.net]
- Lua書く時のエディタって何使ってるの? Lightroomのプラグイン書きなんだけど。
- 649 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 12:28:55.31 ID:5UGjVIn5.net]
- lua-users.org/wiki/LuaIntegratedDevelopmentEnvironments
- 650 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 17:36:40.20 ID:zqGmBD5H.net]
- Intypeってのはどうなん?
- 651 名前:デフォルトの名無しさん mailto:sage [2015/02/16(月) 22:29:33.28 ID:JBQ+Owrp.net]
- luaでファイル保存の時に日付.txtみたいに自動でするのはどうすればいいですか?
- 652 名前:デフォルトの名無しさん mailto:sage [2015/02/16(月) 22:40:47.19 ID:yzFhOePD.net]
- >>645
Luaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
- 653 名前:デフォルトの名無しさん mailto:sage [2015/02/16(月) 23:48:51.20 ID:JBQ+Owrp.net]
- 出来ました、ありがとうございます。
- 654 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 19:51:04.59 ID:Qw0v9eHu.net]
- Luaって存在今日知った。
自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、 Luaってもう仕様安定してるの? 浮動小数点の実装はちゃんとバイナリ?
- 655 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 20:22:48.55 ID:YKDWyqEz.net]
- >>648
本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。 Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。 内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。 正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。 自分は C++ regex を使う別実装を自前で追加してる。
- 656 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 12:07:52.58 ID:ftMcKIol.net]
- >>649
ありがとう。 awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。 ちょっと活用を検討してみます。
- 657 名前:デフォルトの名無しさん [2015/02/23(月) 19:05:53.37 ID:PUEtXCiM.net]
- AngelScript|Д`)<AngelScript2.30.0記念カキコ
メモリ管理の改良とか、キャスト用メソッドの登録方法が変わったとか色々変更あるっぽい。
- 658 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 23:12:44.33 ID:2B41jSVI.net]
- (´\r-、 ┼ + /`/`) +
┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
- 659 名前:sage [2015/03/17(火) 22:57:10.71 ID:yVREPXol.net]
- flashairいじってる人いる?
- 660 名前:デフォルトの名無しさん [2015/03/17(火) 23:14:59.23 ID:Wb8shGuw.net]
- >>653
AS3は組み込めないだろ・・・
- 661 名前:650 mailto:sage [2015/03/17(火) 23:25:25.06 ID:yVREPXol.net]
- まあまあ^^;
luaでio.writeでSDカードに書き込めるかと思いきやなんか挙動が怪しい・・
- 662 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 22:52:38.83 ID:L0A+zZu9.net]
- 連想配列の要素数を返す関数(table.maxn)みたいなものってありますか?
tbl[] tbl[ "a" ] = data1 tbl[ "b" ] = data2 tbl[ "c" ] = data3 #tblやtable.maxn(tbl)をやっても「0」が帰ってきてしまいます。 ハッシュの場合、格納されている要素数を返すものはないのですかね ざっと検索して調べた感じそれっぽいのはありませんでした
- 663 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 22:59:40.53 ID:L0A+zZu9.net]
- table.maxn(tbl)
テーブルtblの持つ要素のキーのうち、正の数値(FIXNUM)であるものの中で最大のものを返します。 tblが正の数値(FIXNUM)のキーの要素を持たない場合は0を返します。 ってかかれてるからpairsで回して数取得するようなやり方しかないかもなあ・・。
- 664 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 23:05:44.47 ID:L0A+zZu9.net]
- とりあえずこんなかんじで回避することにしました
何か他により良いやり方があれば教えて下さい function get_hash_count( hash ) local cnt = 0 for key, value in pairs(hash) do cnt = cnt + 1 end return cnt end
- 665 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 00:40:05.35 ID:eLW2DJDr.net]
- >>658
それが一番速いと思います luaのテーブルは厳密な要素数を追跡してないのよ 値をスカスカに配置して列挙時に存在チェックする
- 666 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 02:22:26.48 ID:ubi9S/wo.net]
- >>659
ありがとうございます luaの仕様的に他に良い方法はないのですね
- 667 名前:デフォルトの名無しさん [2015/04/25(土) 21:53:05.10 ID:udlJJGWW.net]
- >>1
組み込み系言語ってファームウェア用かと思ったwww
- 668 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 08:43:41.87 ID:9sNRGOg0.net]
- 質問失礼します。
ソフトにLuaを組み込んでユーザーにLuaスクリプトを作ってもらおうと思っています。 そのLuaスクリプトを他のユーザーにばらまかれるとセキュリティ上危なくなるので困っています。 Luaで書けるファイルIOやネット上のダウンロードなど、危なそうな機能だけ無効化したいのですが可能でしょうか? 分かる方、よろしくお願いします。
- 669 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 09:18:48.10 ID:18wKNGsP.net]
- >>662
・不必要な標準モジュールは組み込まない。 ・モジュールの中に不必要な関数がある場合は同名の関数を作ってオーバーライドしてしまう。
- 670 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 09:20:47.53 ID:18wKNGsP.net]
- 同名の関数を作る、というよりファンクション型の変数に代入し直すというのが正しいか
- 671 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 11:51:04.49 ID:RhUk/Sb2.net]
- io系 file系 debug系、os.systemなどをlua本体のソースから外す。
requireのうち、c系dll読み込みも外す。
- 672 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 14:01:37.37 ID:9sNRGOg0.net]
- >>663
>>665 塞ぎ忘れたらとんでもない事になりそうですね。。。 がんばってみます。 ありがとうございました。
- 673 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 18:39:19.42 ID:RhUk/Sb2.net]
- Luaは本体のcソースの段階で、追加したり削除されたりすることを念頭において
作られてるので、めちゃくちゃ簡単に追加や削除ができるよ。 やり始めたらあまりに簡単でびっくりするとおもう。 最悪上記の消したいlua関数のregisterの処理だけl***lib.c系からコメントアウトした上で、 luaインタプリタを本体アプリにスタティックリンクするだけで、それなりに仕組みを深く理解している人以外はイタズラしにくくなる。
- 674 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 20:13:20.63 ID:ByjLANN5.net]
- -- preload.lua
io = nil ... とかを用意して ユーザースクリプトを読む前にdofile 中身が決まったらdostringでハードコードする ってのが簡単
- 675 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 23:36:05.71 ID:V1hm5/yh.net]
- 5.2以降は意図的に読み込まないと標準ライブラリとは使えないよ。
Ubuntuとかはまだ5.1だったりするのかな
- 676 名前:デフォルトの名無しさん [2015/05/03(日) 17:51:04.86 ID:R+xSVf6m.net]
- >>668
わざわざそんなことするより、読み込み部コメントアウトした方が 簡単だろw モジュール単位、関数単位で、1行ずつ「追加・削除はご自由に」って 感じで全部列挙されてんだから。
- 677 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:10:07.04 ID:IVZoCitV.net]
- 殺したい関数型変数に新しい関数を代入するだけだってばさ。
何でわざわざ改造せねばならんの?
- 678 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:16:54.02 ID:hj7OiJXS.net]
- まあまあ
Lua処理系を勝手に改造できる(してもいい)環境でないとそもそもできないね
- 679 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 07:02:11.02 ID:Sl6NKpln.net]
- lua処理系を全く改造しないって無理がないかなぁ?
exit とかが数箇所入ってる時点で 組み込みで等でコンパイル済ライブラリを そのまま使うのは怖すぎると思う。
- 680 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 07:28:47.12 ID:ZL3JUBSp.net]
- 改造前提だろう
requireもマルチバイト文字を含むパスを扱えないし (win環境) 本体と比べてライブラリの品質は良くない
- 681 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 07:51:01.81 ID:sbqo/+Tp.net]
- 混乱するので659への回答と他の話題は分けていただけると助かります
- 682 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 08:38:47.22 ID:Sl6NKpln.net]
- >>675
だから、 ソースとか全部自由になるのなら、ベストはC層で ・不要なライブラリのロードを消す。 ・package.cpath を消す。 or requre 自体不要なら消す。 ・ソースから本体アプリにLuaごろスタティックリンク これがデフォルトよりサイズも小さくスピードもアップする上に、 いたずらの可能性も限りなく0 LuaでnilにしたのをCへdostringで=といったのは、 一部を手抜きで代替するという案であって 決してベストなものではない。 スピードが遅くなったり実行ファイルにゴミは残るが、 そういう手の抜き方もあるよ、という話。
- 683 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 22:44:21.04 ID:qi4175C9.net]
- autotouchhでゲームのリセマラマクロ作ってるんですけど
iosのアプリ固有ID? //var/mobile/Containers/Data/Application/********/Documents の********の部分の取得方法がわからなくて困ってます。 プログラミング自体初心者で一月ほど調べてるけどよくわからない言葉だらけで・・・ 何かアドバイスくださいm(__)m
- 684 名前:デフォルトの名無しさん [2015/05/04(月) 23:07:02.98 ID:8Z+6LqT8.net]
- お前向いてないからもうやめとけ
- 685 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 23:17:09.78 ID:qi4175C9.net]
- そんなに簡単なんですか・・・
すみません・・・ 最後に是非教えてください
- 686 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 12:42:12.67 ID:KszErmBE.net]
- AppInfoってアプリ入れてみ
これでわかんなかったら本当にやめろ
- 687 名前:674 mailto:sage [2015/05/06(水) 08:00:28.72 ID:uYsfVS/M.net]
- いや、調べ方はわかるん
- 688 名前:です、コードでどうすればいいかがわからないんです。
マクロ自体は完成しているんですが、アップデートとかのたびに変わるみたいで 手作業で書き直してるんでそれをどうにかできればなと...... [] - [ここ壊れてます]
- 689 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 11:08:53.11 ID:/KG0Gdz0.net]
- ios固有なのか、そのアプリ固有なのか、
luaに依存する処理なのか? なんとなくスレ違いの部分で悩んでいる感がある 文字列やファイルの処理ではないんだろ?
- 690 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 11:18:37.36 ID:iq3C3Ifp.net]
- >>681
qiita.com/fuhi1983/items/342b82f3222483697e8e これじゃねーの?
- 691 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 14:09:18.09 ID:Om2we3tL.net]
- >>681
そのフォルダ名はアプリの構成かわるときにランダムに決定されるので、そのアプリ自身以外からは基本的には特定できない仕組みになってる Data/Application/*** の下に、なにかしらアプリを特定できるような情報が入ったファイル(たぶんInfo.plistとか)があるだろうから、それを全部探索して読み込んで目的のアプリを探す、以外の方法は無い
- 692 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 15:34:43.00 ID:uYsfVS/M.net]
- >>684
そうなんですね、ありがとうございます。 どこかに情報ないかといろんなファイルをtextで開いてたのですが見つからないはずですね ありがとうございました。
- 693 名前:デフォルトの名無しさん [2015/05/16(土) 00:11:08.39 ID:yj1J+1ps.net]
- 定義したあるテーブルのメソッド一覧を取得することはできますか?
player = {} function player:Attack() end function player:Jump() end 上記のような定義があり、 "Attack"と"Jump"のキーとその関数をペアで取得したいのですが
- 694 名前:デフォルトの名無しさん mailto:sage [2015/05/16(土) 00:33:56.90 ID:nBVK7qH/.net]
- Lua自体にはメソッドという分別は無いので関数かどうかで判断するだけだな
for k,v in piars(player) do if type(v) == "function" then printf(k, v) end end
- 695 名前:デフォルトの名無しさん [2015/05/16(土) 00:48:49.46 ID:yj1J+1ps.net]
- お〜
できました〜 かゆいところにきちんと手が届いてくれていい言語ですねぇコレ ありがとうございます。
- 696 名前:デフォルトの名無しさん mailto:sage [2015/05/18(月) 06:50:19.69 ID:QWumnvsF.net]
- すう様はきちんと考えながら英語を喋ってるよ。
あれはカンペとかじゃない。
- 697 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 14:34:42.08 ID:dht99EFe.net]
- Luaで悩んでいます。ご教示お願いいたします。
下記のようなテキストの入った複数の配列があり、 tbl01={"a","b","c"} tbl02={"d","e","f"} tbl03... ストリング型のstrという変数に"tbl"という文字列が入っています。 やりたいことは、文字列型の値を何とか加工してtblの要素にアクセスしたいんです。 str[1] とするとエラーが出ますし・・・(まあそうですよね) 強引にtable型に型変換できないかな?とか悩んでいます。 文字列しか受け取れない場合、複数ある配列にアクセスするには どのようにすればよろしいでしょうか? 詳しい方教えてください。お願いします!
- 698 名前:687 mailto:sage [2015/05/19(火) 14:37:23.12 ID:dht99EFe.net]
- ↑すみません、間違えました。
strの中に入っている文字列は"tbl"ではなく"tbl01"としています。 いずれにせよ無理ですが…
- 699 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 16:19:59.83 ID:Nw+B6083.net]
- >>690
string.sub() or .byte() 1文字ずつ処理するのはC系に比べて苦手。 代わりに正規表現が使えないか要検討。
- 700 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 16:23:48.21 ID:26zc2bnI.net]
- 微妙にエスパー能力が必要な質問だが、こういうことけ?
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])
- 701 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 16:28:09.88 ID:Nw+B6083.net]
- >>690
違うな。質問の意図を取り違えていたかも? str[1]の代わりになるのは >>692 だが、 元々の目的が「変数に入っている変数名を経由したアクセスがしたい」ならば _G を使う: str = "tbl01" assert(_G[str] == tbl01) tbl01 等がグローバル変数、ローカル変数、他テーブルの要素で処理が違うものになるから、これでダメならまた聞いてくれ。
- 702 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 22:19:05.65 ID:dht99EFe.net]
- >>692
>>693 お二方、ありがとうございます! エスパーみたいな質問になってしまいましたね。すみません。 実現したいことの詳細をより細かく記載します。どうしても実現したいので。もう3日悩んでます。 ゲームを制作しています。 ゲームエンジンからluaを呼んでluaで処理させることができるのですが、 ゲームエンジンの仕様でlua側に渡せる値が文字列のみです。 luaで何をしたいかというと、上記のように大量にテーブルを作って中身も代入しておきます。 すべて文字列のデータです。 ゲームエンジン側から@文字列Aテーブル名の二つの値を渡します。(もちろん両方文字列でしか渡せません) その二つの値がlua側に渡ったら、Aを使ってテーブルを探し、@を使ってそのテーブルの中に @と同じ文字列があるか比較します。 文字列があったら1を返して、なかったら2を返す…ということを実現したいのです。 >>690の例で行くと、ゲームエンジンから@"a"とAtbl01をもらって、lua側のtbl01をforで回して 探していけばいいや…と思っていました。しかし、 strにtbl01が入っていたとして、 for i=1 , table.maxn(str) , 1 do …なんてことをすると、文字列なのでエラーが返ってきますorz いろいろ試してみてstr[i]なんてことまでやってみる始末。もちろん動
- 703 名前:かないですが。
そもそもluaって動的に型を決めてくれるので明示的にこちらから「こいつはtable型だよ!」 って指定できないんですね。(java使っている者でして…) 説明不足なら捕捉します。後出し申し訳ありません。何卒よろしくお願いいたします。 [] - [ここ壊れてます]
- 704 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 22:35:28.81 ID:UWcSl4nD.net]
- >>695
table型だよって指示できないもなにも、変数strの中身はあくまでstringなんだから、Javaで同じことやる場合でもHashTableかなんか使うよね? つまり、>>694 がやりたいことなんじゃないの? table.maxn(_G[str]) でできると思うよ
- 705 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 23:29:17.09 ID:dht99EFe.net]
- >>696
やりました!!! 要素にアクセスできましたーー! そのまま文字列一致の判定をして、フラグ1が返ってきました。 これでゲームの核の部分が作れました。 そもそも_Gの使い方を間違ってました… しかしLuaって色々弄って思ったのですが想像以上に柔軟なんですね。 お三方、親身に教えてくださってありがとうございます。
- 706 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 21:08:36.02 ID:sCH5oSB/.net]
- 質問失礼します。
OSX 64bit Unity という環境で Lua を使用しています。 Windowsでは正常に動くのですが、OSX 64bit で動かすと LuaDLL.luaL_newstate(); で null が返ってきて困っています。 パッケージを見ると Mac (x86 only) と明記してありました。 OSX 64bit でも動かしたいのですが、どうやれば良いでしょうか?
- 707 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 21:17:17.45 ID:WFHyWYJ8.net]
- 64bitなdllを別途準備しないとダメじゃね?
- 708 名前:695 mailto:sage [2015/05/25(月) 21:18:45.04 ID:sCH5oSB/.net]
- >>699
そうですよね。。。 makeは通ったんで、頑張ってみます!
- 709 名前:695 mailto:sage [2015/05/28(木) 19:45:28.97 ID:52beXCpy.net]
- 詰まりました。。。
LuaJIT-2.0.2を利用しているのですが、OSX用のuniversal binaryで出力する方法が分かりません。 Luaの速さに全体重を乗っけてるんで、今更別の言語への切り替え等は考えられません。 分かる方、ぜひ教えてください。
- 710 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 01:55:02.89 ID:p/ahFCvT.net]
- 個々にビルドした場合はlipoというツールで合体させるらしい?
https://www.google.co.jp/search?q=lipo+universal+binary
- 711 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 02:07:51.90 ID:p/ahFCvT.net]
- luajitではなく、luaならhomebrewとかみるとuniversalのオプションがあるね。
brew install lua --universal >698も根が深そうな。。。 https://www.google.co.jp/search?q=luaL_newstate+64bit https://gist.github.com/nddrylliog/8722197
- 712 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 02:13:23.25 ID:p/ahFCvT.net]
- とおもったけど、普通に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
- 713 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 09:55:09.44 ID:2a3TZL/2.net]
- >>702-704
ありがとうございます! LuaJITの32bit版ライブラリと64bit版ライブラリを出力して、lipoというソフトで合体という事ですよね? 試行錯誤してみます!
- 714 名前:695 mailto:sage [2015/05/29(金) 15:29:21.86 ID:2a3TZL/2.net]
- >>698も根が深そうな。。。
まさにコレでした。 問題は2つあったんですね。 もうお手上げです。 とりあえず勉強になりました。 ありがとうございました。
- 715 名前:695 mailto:sage [2015/05/30(土) 02:16:04.85 ID:WJHjPFg2.net]
- ちょっとレスにミスったんで、訂正
>>703 >698も根が深そうな。。。 ↑まさにコレでした。
- 716 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 16:28:17.35 ID:SxkHJw7D.net]
- 最新のsnes9xでluaを読み込む方法を教えてください
pastebin.com/nBuJChc9を動作させたいです
- 717 名前:デフォルトの名無しさん [2015/09/30(水) 15:13:43.25 ID:gLrxUsPl.net]
- Nekoって一応プログラミング言語だったのか
Haxeのプログラムを動かすVMとだけ思ってた https://en.wikipedia.org/wiki/Neko_(programming_language)
- 718 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 15:57:26.40 ID:2TkwnPLU.net]
- 新進気鋭のプログラミング言語「Neko」ってなに?
news.mynavi.jp/articles/2007/08/06/neko/
- 719 名前:デフォルトの名無しさん [2015/10/06(火) 22:32:11.35 ID:uxUTfTFS.net]
- 受ける会社大丈夫?
下記の条件が全て当てはまる会社にご注意下さい。 ・IT系 in tokyo ・「社名 労基」でググると過去の2chスレが出てくる ・転職会議で2.5点
- 720 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 00:53:22.02 ID:Kl04gCQo.net]
- Ravi
https://github.com/dibyendumajumdar/ravi lua5.3互換、静的型付け追加、jit
- 721 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 01:29:46.09 ID:+L1p2dWm.net]
- きみのためなら死ねる。Ravi!
|

|