【Lua】組み込み系言語総合 その6【Squirrel】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2013/03/10(日) 15:10:32.28使われるプログラミング言語についてのスレッドです
まとめ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/
0002デフォルトの名無しさん
2013/03/10(日) 15:12:03.71ttp://www.lua.org/ (本家)
ttp://lua-users.org/ (lua-users)
ttp://luaforge.net/ (LuaForge)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html(5.1マニュアル和訳)
Lua言語の紹介
http://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
入門Luaプログラミング
http://www.amazon.co.jp/dp/4797342722/
□Lua as an Effect File Format for OpenGL
http://prideout.net/blog/?p=1
□Squirrel
http://www.squirrel-lang.org/ (本家)
http://sourceforge.net/projects/squirrel/
http://sourceforge.net/projects/sqplus/ (SqPlus)
http://sourceforge.net/projects/squirrelsh/ (Squirrel Shell)
http://wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc(wiki内2.1マニュアル和訳)
□AngelScript
http://www.angelcode.com/angelscript/
□Xtal(ゲーム向け。スタックを意識しなくていい?)
http://d.hatena.ne.jp/xtalco/
http://code.google.com/p/xtal-language/
http://blog.livedoor.jp/dankogai/archives/50836939.html
□elastiC
http://www.elasticworld.org/
0003デフォルトの名無しさん
2013/03/10(日) 15:15:41.30Io Language
http://hibari.2ch.net/test/read.cgi/tech/1201100624/
2 part forth
http://pc11.2ch.net/test/read.cgi/tech/1073673931/
●●●●TCL/TKなら俺に聞け 2●●●●
http://pc11.2ch.net/test/read.cgi/tech/1177998764/
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
各種ライブラリ紹介スレ2(ゲ制作)
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
Eclipse統合M34【Java/C++/Ruby/Python/Scala】
http://toro.2ch.net/test/read.cgi/tech/1361510049/
「コンパイラ・スクリプトエンジン」相談室15
http://hibari.2ch.net/test/read.cgi/tech/1296214398/
Garbage Collection (GC)について語るスレ(DAT落ち)
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
0004デフォルトの名無しさん
2013/03/10(日) 15:18:19.66いつ立てるの?今でしょ!
0005デフォルトの名無しさん
2013/03/11(月) 00:44:45.260006デフォルトの名無しさん
2013/03/11(月) 01:15:20.59次スレは>>980あたりが立てればいいか?
0007デフォルトの名無しさん
2013/03/11(月) 09:56:54.760008デフォルトの名無しさん
2013/03/11(月) 18:39:51.97Update 2013-03-08: Please apply Hotfix#1 to the 2.0.1 download.
0009デフォルトの名無しさん
2013/03/13(水) 21:01:52.29\ ヽ ) ) \\ \\
( \ \∩___∩ \\
\ \ ⌒⌒| ノ ヽ \\
\ \ / ● ● ト、\ \\\
\ Y | ( _●_) ミ\ \\\
\ / 彡、_ |∪| ノ \ \\\
(____)―ヽノ' ヽ  ̄ ̄ ヽ\\
\, j l l .l }
Lua! l (_ノノノノ
0010デフォルトの名無しさん
2013/03/19(火) 08:31:39.530011デフォルトの名無しさん
2013/03/19(火) 20:43:32.770012デフォルトの名無しさん
2013/03/19(火) 20:54:19.770013デフォルトの名無しさん
2013/03/19(火) 21:21:41.59小さくて密度の高い事は美しいことだから。
0014デフォルトの名無しさん
2013/03/19(火) 23:18:07.760015デフォルトの名無しさん
2013/03/20(水) 05:44:19.660016デフォルトの名無しさん
2013/03/20(水) 07:12:07.390017デフォルトの名無しさん
2013/03/20(水) 09:54:07.190018デフォルトの名無しさん
2013/03/20(水) 14:50:07.030019デフォルトの名無しさん
2013/03/22(金) 15:29:50.19コードを難解にするだけじゃん
0020デフォルトの名無しさん
2013/03/22(金) 17:52:56.000021デフォルトの名無しさん
2013/03/22(金) 19:55:31.63あれほど簡潔なものはないとおもうが?
0022デフォルトの名無しさん
2013/03/22(金) 20:16:28.690023デフォルトの名無しさん
2013/03/22(金) 21:49:15.120024デフォルトの名無しさん
2013/03/22(金) 23:37:53.280025デフォルトの名無しさん
2013/03/23(土) 00:31:02.17演算子をメタテーブルで与える。
これはC++のoperatorとかRubyの def 演算子()
に該当するなんのへんてつもないただの定義でないのん?
0026デフォルトの名無しさん
2013/03/23(土) 00:32:36.870027デフォルトの名無しさん
2013/03/23(土) 00:53:51.290028デフォルトの名無しさん
2013/03/23(土) 09:28:32.810029デフォルトの名無しさん
2013/03/23(土) 17:16:41.740030デフォルトの名無しさん
2013/03/23(土) 17:50:15.620031デフォルトの名無しさん
2013/03/23(土) 19:47:34.800032デフォルトの名無しさん
2013/03/23(土) 21:38:19.500033デフォルトの名無しさん
2013/03/24(日) 09:41:18.140034デフォルトの名無しさん
2013/03/24(日) 16:32:17.84generatorじゃないんだから
0035デフォルトの名無しさん
2013/03/24(日) 16:35:10.570036デフォルトの名無しさん
2013/03/24(日) 16:48:46.240037デフォルトの名無しさん
2013/03/24(日) 17:42:15.18ん?
pythonの内包表記は即座にリストとして展開されるよ
[ x ** 2 for x in range(10) if x%2 == 0 ] みたいに角かっこで書くやつね
( x ** 2 for x in range(10) if x%2 == 0 ) みたいに丸かっこで書くとgenerator式になる
0038デフォルトの名無しさん
2013/03/24(日) 17:46:46.830039デフォルトの名無しさん
2013/03/24(日) 18:13:24.430040デフォルトの名無しさん
2013/03/24(日) 18:34:00.430041デフォルトの名無しさん
2013/03/24(日) 19:27:34.14逆に言えばLuaだけで何でもできると思ってる奴はアフォ
0042デフォルトの名無しさん
2013/03/24(日) 20:05:41.560043デフォルトの名無しさん
2013/03/24(日) 20:12:10.70関数型言語では当たり前だけど、pythonとかメジャーなスクリプトではスタックがあふれるだろ?
0044デフォルトの名無しさん
2013/03/24(日) 20:15:13.570045デフォルトの名無しさん
2013/03/24(日) 20:31:15.66function LC(f)
local t = {}
for x in coroutine.wrap(f) do
table.insert(t, x)
end
return t
end
-- rangeの実装は省略
local t = LC(function () for x in range(10) do coroutine.yield(x ^ 2) end end)
0046デフォルトの名無しさん
2013/03/24(日) 20:32:18.04pythonの関数呼び出しは単純にC言語のコールスタックに依存してるので、どんどん積み上がっていくよ
0047デフォルトの名無しさん
2013/03/24(日) 20:33:56.31これはキモイな
やはりpythonには勝てないか
0048デフォルトの名無しさん
2013/03/24(日) 20:43:35.17Luaは区別無し。名前の無いfunctionがlambda
0049デフォルトの名無しさん
2013/03/24(日) 20:57:01.13やるとしたらそんな感じだろうね
でも、内包表記って言うよりはmapみたいな雰囲気になっちゃうよね
内包表記って数学の集合みたいに宣言的に記述できるってところがメリットのひとつだからなぁ
数学だとこんな感じ? S = { x^2 | x ∈ N, x < 10, x mod 2 = 0 }
やっぱり言語としてサポートしないとつらそう
0050デフォルトの名無しさん
2013/03/24(日) 21:05:14.50すごく同意
pythonのlambdaは中途半端だね
Luaは文法がコンパクトですっきりしていて、すごく便利って感じではないが
でもコルーチンをサポートしてたり、末尾呼び出し最適化してたりで
ちょうどいい塩梅
0051デフォルトの名無しさん
2013/03/24(日) 21:14:17.850052デフォルトの名無しさん
2013/03/24(日) 21:27:46.25lispのリーダーマクロっぽいのほしいな
0053デフォルトの名無しさん
2013/03/24(日) 21:31:07.630054デフォルトの名無しさん
2013/03/24(日) 21:33:14.06もっと欲張るならPythonも比較的組み込みやすい
0055デフォルトの名無しさん
2013/03/24(日) 21:59:26.75なおrubyも内包表記はない模様
0056デフォルトの名無しさん
2013/03/24(日) 22:59:45.74実行時のメモリのフットプリントが数倍くらい多い
APIがスタックベースじゃないため拡張は幾分書きやすいけど
そのせいでネイティブとの行き来が増えると実行コストは大きくなる傾向がある
JITはまだ実用レベルじゃない
みたいな感じ(俺調べ)
Luaに取って代わるかは知らんけど、二番煎じ処理系(Sq*とかxta*とか)は駆逐できそうな感じではある
0057デフォルトの名無しさん
2013/03/25(月) 00:06:08.811万6千行に対し二万四千行。
んで、LuaのソースコードはCでもC++でも
どちらでもコンパイル可能なので
Luaの関数の内部からC++のライブラリが使える
(ただしthrowが外側に貫通してはいけないけどね)
yaccとかも不要。
なんというか、最近のbisonとかは内部でm4使ってるとか
いろいろとめんどくさい仕様に改悪されてるから助かるw
0058デフォルトの名無しさん
2013/03/25(月) 03:30:49.12今のパーサはシンプルな手書き再帰下降でLL(2)だから
内包表記の対応は難しいんじゃないかな
0059デフォルトの名無しさん
2013/03/25(月) 07:51:15.04構文木を介さず直接コード生成してるところが逆にネックになりそう
0060デフォルトの名無しさん
2013/03/25(月) 17:54:00.04全部でこれだけかよってびっくりしたわ
これなら個人で解析出来るな、今日から読んでみるわ
0061デフォルトの名無しさん
2013/03/25(月) 21:59:44.09ついでに「:」か「.」を別の記号に変えたくなるけどね
0062デフォルトの名無しさん
2013/03/26(火) 01:13:30.00luajitでは動かないみたいだが。
0063デフォルトの名無しさん
2013/03/27(水) 21:52:23.470064デフォルトの名無しさん
2013/03/28(木) 08:20:38.05lua-5.2.2
http://www1.axfc.net/uploader/so/2847097
0065デフォルトの名無しさん
2013/03/28(木) 08:36:16.340066デフォルトの名無しさん
2013/04/02(火) 21:46:57.640067デフォルトの名無しさん
2013/04/02(火) 22:04:23.950068デフォルトの名無しさん
2013/04/02(火) 22:09:38.32依存関係がMSVCRT.DLLってことはMingW?
0069デフォルトの名無しさん
2013/04/02(火) 22:16:19.200070デフォルトの名無しさん
2013/04/02(火) 22:26:09.110071デフォルトの名無しさん
2013/04/02(火) 22:27:32.440072デフォルトの名無しさん
2013/04/02(火) 23:20:37.81DLLって公開する意味あるの?
不整合とか気にするジャン。
0073デフォルトの名無しさん
2013/04/02(火) 23:24:16.560074デフォルトの名無しさん
2013/04/03(水) 00:02:33.52DLL側のランタイムでデータフォーマットや
整列条件違ったら困ったことにならないの?
0075デフォルトの名無しさん
2013/04/03(水) 00:15:02.910076デフォルトの名無しさん
2013/04/03(水) 00:31:33.850077デフォルトの名無しさん
2013/04/03(水) 01:20:18.06DLLの境界問題出にくいけどな
ちゅーかどこぞの馬の骨が捨て置いたバイナリに喰いつく暇があったら
自分のプロジェクトにLuaのソースコード突っ込んだ方が建設的かと
0078デフォルトの名無しさん
2013/04/03(水) 01:22:27.160079デフォルトの名無しさん
2013/04/03(水) 20:17:59.94中の妖精さんと高額契約したのですか?
0080デフォルトの名無しさん
2013/04/03(水) 21:11:29.32|/__
ヽ| l l│<ハーイ
┷┷┷
0081デフォルトの名無しさん
2013/04/03(水) 21:37:47.94(この方式は他も追従し追いつかれつつある)
VMがレジスタマシンであること
設計の合理性
(整数演算の切捨てなど、ボトルネックの分析が良かった)
JITなど速い方式の実装も行われている
かな
0082デフォルトの名無しさん
2013/04/03(水) 21:55:44.63doubleのほうが百万倍遅いじゃないですか気持ち的に
0083デフォルトの名無しさん
2013/04/03(水) 22:05:29.72Luaはそれを切り捨てたのよ。
それでもベンチマーク成績は高かった。
つまり、演算以外の部分が問題だったわけね。
0084デフォルトの名無しさん
2013/04/03(水) 22:11:56.98intとdoubleの変換が遅かったりして。
0085デフォルトの名無しさん
2013/04/03(水) 22:14:30.36そこいらへんにたくさんあるARMとで、天と地ほどの差があるなw
0086デフォルトの名無しさん
2013/04/03(水) 22:16:23.31が5.2でライブラリが追加されたからそれもほぼ解消
0087デフォルトの名無しさん
2013/04/03(水) 22:19:25.09浮動小数演算がボトルネックにはならなかったって話と、整数演算が
ボトルネックだったって話は関係ないじゃん。
0088デフォルトの名無しさん
2013/04/03(水) 22:28:42.34http://lua-users.org/wiki/FloatingPoint
0089デフォルトの名無しさん
2013/04/03(水) 22:31:35.750090デフォルトの名無しさん
2013/04/03(水) 22:52:19.88浮動小数点演算の遅さは実は問題ではなかったという判断
だから整数演算いらんというデザイン
0091デフォルトの名無しさん
2013/04/03(水) 22:53:39.830092デフォルトの名無しさん
2013/04/03(水) 23:01:32.810093デフォルトの名無しさん
2013/04/03(水) 23:14:14.82つまり、整数演算切り捨てたこととLuaが速いことは関係ないってことだろ。
>>81はボトルネックと言っているが。
0094デフォルトの名無しさん
2013/04/03(水) 23:25:40.76整数演算がボトルネックとは言ってないし
>>83や>>90のフォローもそれを補強していると思うんだが
読解力がないのならしょうがない
0095デフォルトの名無しさん
2013/04/03(水) 23:31:28.29ローカル変数をわざわざ指定しなきゃならんとか
書く側からすれば面倒な仕様だけど多分これだとGCがやりやすいんだろうなとか
ソース見たわけじゃないから分からんけどね
0096デフォルトの名無しさん
2013/04/04(木) 20:48:23.650097デフォルトの名無しさん
2013/04/04(木) 20:55:01.090098デフォルトの名無しさん
2013/04/05(金) 20:50:30.10と思ったのに!
0099デフォルトの名無しさん
2013/04/10(水) 01:40:40.270100デフォルトの名無しさん
2013/04/12(金) 20:39:39.690101デフォルトの名無しさん
2013/04/13(土) 06:03:24.530102デフォルトの名無しさん
2013/04/13(土) 10:14:35.220103デフォルトの名無しさん
2013/04/13(土) 12:50:15.630104デフォルトの名無しさん
2013/04/13(土) 16:49:05.32JSとの互換性をある程度制限したサブセットならluaのVMで動かせるんじゃないか
0105デフォルトの名無しさん
2013/04/13(土) 21:56:15.100106デフォルトの名無しさん
2013/04/13(土) 23:11:15.340107デフォルトの名無しさん
2013/04/13(土) 23:24:25.010108デフォルトの名無しさん
2013/04/14(日) 08:39:34.90EclipseのM2M開発環境
> EclipseはArduinoとRasberry Piデバイスの開発のチュートリアルを提供している。
> これには組み込みLuaランタイム(Mihini)とLuaの開発環境(Koneki)のセットアップ方法も含まれている。
Luaがセンサーネットワークの世界に旅立っていった。
0109デフォルトの名無しさん
2013/04/14(日) 08:43:24.100110デフォルトの名無しさん
2013/04/14(日) 10:19:21.310111デフォルトの名無しさん
2013/04/14(日) 10:23:03.290112デフォルトの名無しさん
2013/04/15(月) 14:31:12.59オブジェクトのインスタンスとメソッドから関数ポインタを作る機能のようだ
普通の関数もクラスメソッドも関数ポインタに代入できる
3.0では値型のオブジェクトは使えなくなって
参照型のオブジェクトのみになるらしい
そうなるといっそうC#やJavaっぽくなる
0113デフォルトの名無しさん
2013/04/17(水) 19:02:58.71大々的にLuaBindのことを日本語で語ってるような場所ってないですかね?
0114デフォルトの名無しさん
2013/04/21(日) 06:56:41.22┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0115デフォルトの名無しさん
2013/04/24(水) 18:36:10.04MarmaladeがRADツールMarmalade Quickを正式リリース 2013-02-11 14:14
ttp://www.madewithmarmalade.com/node/60359
またMarmalade Quickは“ZeroBrane Studio” IDEと統合されており、Luaスクリプトの容易なオーサリング、デバッグが可能です。
0116デフォルトの名無しさん
2013/04/30(火) 22:06:32.31状況に応じて構造体の中身が変わる物を
squirrel から C++ 側に送りたい時って
何かいい方法はあるのでしょうか。
ディフューズ色が DWORD なのが問題なのですよね…。
他は殆どが FLOAT なのに…。
0117デフォルトの名無しさん
2013/05/01(水) 02:36:38.25http://www.publickey1.jp/blog/13/asmjsjavascript.html
0118デフォルトの名無しさん
2013/05/01(水) 02:41:19.590119デフォルトの名無しさん
2013/05/01(水) 15:59:59.18普通にフラグ判定して値を代入しなおすだけではないの?
float も dword も4byte で領域的には同じだからあとは
解釈次第だと思うんだけど何にはまってるんだろう
0120デフォルトの名無しさん
2013/05/01(水) 16:51:43.21バインダはSqrat?
0121デフォルトの名無しさん
2013/05/01(水) 22:59:00.95それと追加で質問なのですが、 C++側でSqrat::Classで登録したクラスを、 SquirrelからC++関数の呼び出しの引数に指定した際に、 C++関数内からクラスの実体を得る方法はあるのでしょうか?
RootTable(vm).GetSlotを使えばメンバ関数・変数にはアクセス出来るのですが、 クラスのポインタを取得して普通のC++のクラスのように扱えたらなと思ったので。
0122デフォルトの名無しさん
2013/05/02(木) 23:32:28.390123デフォルトの名無しさん
2013/05/03(金) 02:38:40.280124デフォルトの名無しさん
2013/05/03(金) 14:30:49.45AngelScript|Д`)ノ<きたわよ
そういうのはAngelScriptでやると簡単。
0125デフォルトの名無しさん
2013/05/03(金) 14:40:55.38┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0126デフォルトの名無しさん
2013/05/03(金) 18:36:39.380127デフォルトの名無しさん
2013/05/08(水) 22:07:08.55方法を解説してる所ってありませんか?
メンバ関数経由でset getするのしか見つからず…
0128デフォルトの名無しさん
2013/05/08(水) 23:56:32.38ラッピング関数作ってると思うけど
0129デフォルトの名無しさん
2013/05/09(木) 00:59:43.08対応するC++のメンバ変数をそのまま返す/設定するってのできるっちゃできるけどね
メンバ関数でやるより逆にコストかかる仕組みになるし多値返しできないしで
ぶっちゃけ言語サポート無しに無理するもんじゃねーなという結論に達した
0130デフォルトの名無しさん
2013/05/09(木) 05:31:19.080131デフォルトの名無しさん
2013/05/09(木) 05:46:34.650132デフォルトの名無しさん
2013/05/09(木) 18:39:34.03AngelScript|Д`)ノ<きたわよ
0133デフォルトの名無しさん
2013/05/09(木) 18:43:49.690134デフォルトの名無しさん
2013/05/09(木) 22:03:41.56なるほど、やはりその方法しかないのですね。
教えて頂きありがとうございました。
0135デフォルトの名無しさん
2013/05/10(金) 21:30:02.440136デフォルトの名無しさん
2013/05/10(金) 22:11:42.38┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0137デフォルトの名無しさん
2013/05/16(木) 18:07:30.53メンバ変数にアクセスする場合の話なのですが、
obj.menba は __get や __set でアクセスすればいいのですが、
obj.menba.var という風なメンバにアクセスしようとしたら、
[the index 'var' does not exist] というエラーが出てしまいました。
こういった使い方をしたい場合はどうやって登録すればいいのでしょうか。
0138デフォルトの名無しさん
2013/05/17(金) 00:17:43.29AngelScript|Д`)ノ<きたわよ
AngelScriptはその辺得意だよ。
0139デフォルトの名無しさん
2013/06/08(土) 18:40:11.38ttp://www.gmscript.com/
Q-Games の新作 PixelJunk, Inc. で使われているそうな…
ttp://pixeljunk.jp/inc/%E4%B8%BB%E3%81%AB%E7%8C%BF%E3%81%A8%E5%83%8D%E3%81%84%E3%81%A6%E3%81%BE%E3%81%99%E3%80%82/
0140デフォルトの名無しさん
2013/06/08(土) 19:25:57.510141デフォルトの名無しさん
2013/06/08(土) 19:42:34.920142デフォルトの名無しさん
2013/06/08(土) 20:01:20.72どう「いい」やつが欲しいのかによる・・・んじゃね
0143デフォルトの名無しさん
2013/06/08(土) 20:49:05.20その資料がここにある
ttp://cedil.cesa.or.jp/session/detail/301
無料だが登録が必要
日本語だとこれ関係しか見当たらぬ…
0144デフォルトの名無しさん
2013/06/09(日) 15:47:26.830145139
2013/06/10(月) 11:39:34.51>>144
>>143 がバンナムの人の講演記事で
業務用ゲーム機で利用した例が紹介されてました。
0146デフォルトの名無しさん
2013/06/11(火) 22:38:34.290147デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0148デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANAngelScriptにもそういうのが欲しい…
デバッグ用の情報取ってきたりするのは簡単なんだけど
0149デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANhttp://www.angelcode.com/angelscript/resources.html
asPEEK - Remote debugger
saejox has implemented a remote debugger for AngelScript projects. By integrating asPEEK into your application you will be able to use an ordinary web browser to remote debug your scripts with a nice graphical interface.
Download asPEEK from Bitbucket
Note: Code uses boost and websocket
0150149
2013/07/02(火) NY:AN:NY.AN0151デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANlua_Stateの使用メモリがKB単位でモリモリ増えてって
消費メモリ量が無視できない量になりつつあるんだけどもそういうもんなの?
0152デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN他の言語も含め生でゴリゴリと各種バインダの差異など含めベンチとりましょう。
簡単なものでいいですよ。
お題が楽しければ暇な人も参戦し実のある内容になるでしょう。
0153デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN知らないだけでtolua++やluabindより良いバインダが存在しているような気がする。
0154デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANダウンロードしたけど、Demoのやつの動かし方が分からなかった…
0155デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN今度は、mallocとかfreeとかをスクリプト言語にバインドする人が出てくる
強力なバインダは良いバインダではない
弱い方が良い
0156デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN#define begin { は、以下のような奴だな。
ttp://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
ttp://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html
なんか全然違う話だと俺は思うのだが
0157デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0158デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN>昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい
マクロの使い方としてK&Rにも書かれてる方法であり、取り立てて驚くような話ではない。
0159デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0160デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0161デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN忠実にしたくない場合はツールに丸投げできないと考えるのが自然
0162デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0163デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANCriScript作ってた人がgoogleかどっかに入ってプロジェクト終了、じゃなかったっけ
0164デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0165デフォルトの名無しさん
2013/07/26(金) NY:AN:NY.AN自分のメソッドを呼び出すコルーチンをインスタンスとして持たせたら、循環参照が起こって解放されずにメモリリークに。
class A
{
coroutine c;
void coFunc()
{
…
Suspend();
…
}
void Init()
{
…
c.SetFunction(cFUNC(this.coFunc));
…
}
void Update()
{
c.Execute();
}
};
こんな感じでやると、cが循環参照になっちゃった。
0166デフォルトの名無しさん
2013/07/27(土) NY:AN:NY.ANその手の処理には弱参照が必要
0167デフォルトの名無しさん
2013/07/27(土) NY:AN:NY.AN0168デフォルトの名無しさん
2013/07/29(月) NY:AN:NY.ANhttp://www.gamedev.net/topic/645977-angelscript-2270-is-out/
・デリゲートを作ったりデリゲートの情報を取得できる
・関数の引数や戻り値がconst参照か調べられる
・GCが把握しているオブジェクトを列挙してパフォーマンス改善に役立てられる
・弱参照 スクリプトのクラスでもアプリケーションのクラスでも使える
0169デフォルトの名無しさん
2013/07/29(月) NY:AN:NY.AN一応GCフラグのあるクラスであれば、弱参照を使っていなくて循環参照になっても、最終的にGCで解放されるはずなんだが
弱参照を使っていればもっと早いタイミングで解放されるので使うといいと思ふ
0170デフォルトの名無しさん
2013/07/31(水) NY:AN:NY.AN弱参照やら
>・デリゲートを作ったりデリゲートの情報を取得できる
の機能を利用してみたがダメだった。
C++側でasIScriptFunctionを保持するやり方を間違えているのかも知れない。
0171デフォルトの名無しさん
2013/08/06(火) NY:AN:NY.AN「スクリプト内のクラスAにC++側で定義したクラスBをメンバ変数として持たせて、Bのインスタンスに
this.〜でAのメンバ関数のdelegateを渡して保持する」
と循環参照が発生して解放されない、という状態になってるっぽい。
「AにBとスクリプト内のクラスCをメンバ変数として持たせて、Cのインスタンスのdelegateを渡して保持する」
場合は大丈夫っぽいんだが、さてどうしたものか。
0172デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0173デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0174デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0175デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN一応、asBEHAVE_GET_WEAKREF_FLAGを使って弱参照にしてみたり、
asOBJ_GCつけてメソッド入れてやってみたんだけど上手く行かないんだ。
asIScriptFunctionが内部で持ってるデリゲート用のオブジェクトが上手く解放できないみたい。
0176デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN循環参照にはならない筈なのに解放漏れがあるならそれは
何処かで参照カウント減らして解放するのを忘れているだけなんじゃないか
としか言えない
0177デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN\\
\\\
\ ∧_∧
( ´・ω・)
G と) ガッ >>174
ヽ⌒)、 \人∧__∧
 ̄ (_) >`д´)')
∨つ /
0178デフォルトの名無しさん
2013/08/18(日) NY:AN:NY.ANhttp://www.gamedev.net/topic/646723-angelscript-2271-is-here-so-soon-yes/
バグフィックス
メモリフットプリントの減少
void expressionで関数の出力引数を省略できる
デフォルト引数を匿名に出来る
0179デフォルトの名無しさん
2013/08/29(木) NY:AN:NY.AN0180デフォルトの名無しさん
2013/08/30(金) NY:AN:NY.AN/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0181デフォルトの名無しさん
2013/08/31(土) NY:AN:NY.AN0182デフォルトの名無しさん
2013/09/01(日) 10:45:33.660183デフォルトの名無しさん
2013/09/01(日) 12:16:25.91ほとんどが動的型付けだから
コード補完の性能はどれも似たようなもの
むしろ使い慣れた開発環境・エディタが対応しているかの方が重要だと思う
0184デフォルトの名無しさん
2013/09/01(日) 13:52:27.440185デフォルトの名無しさん
2013/09/01(日) 15:20:57.01VS&C#にC#だな。
0186デフォルトの名無しさん
2013/09/01(日) 15:56:48.03みたいなツッコミでOK?
0187デフォルトの名無しさん
2013/09/01(日) 16:01:13.71って感じでさらに脱線させればOK?
0188デフォルトの名無しさん
2013/09/01(日) 18:35:17.50絵空事ばかり
世迷い言に人々を巻き込みやがって
太平妖術だよ
0189デフォルトの名無しさん
2013/09/01(日) 18:36:18.64┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0190デフォルトの名無しさん
2013/09/01(日) 20:38:37.260191デフォルトの名無しさん
2013/09/02(月) 00:35:21.080192デフォルトの名無しさん
2013/09/02(月) 22:27:39.45ラッパーとインタフェースの自動生成が捗る?
0193デフォルトの名無しさん
2013/09/02(月) 22:41:22.04最近のは知らんが
0194デフォルトの名無しさん
2013/09/04(水) 16:57:01.010195デフォルトの名無しさん
2013/09/04(水) 17:20:42.93を繰り返してるうちに嫌になるな
生成されたシンボル名が1000文字突破してるの見て
めまいがしたのもいい思い出だ
0196デフォルトの名無しさん
2013/09/04(水) 18:12:40.97luabindより楽なケースもあればバインダ使わず生で書いたほうが楽なケースもある
その上で、SWIGを選択するような状況でダメだというなら
他の選択肢はtoluaぐらいしかない
で、SWIGとtoluaを比べると
冗長なのはデメリットだが依存せずピュアコードを吐くのはメリットなので好みの問題として
多言語対応でつぶしが効くという1点においてSWIGの勝ちかなと思うよ
0197デフォルトの名無しさん
2013/09/10(火) 19:15:01.410198デフォルトの名無しさん
2013/09/10(火) 19:36:31.380199デフォルトの名無しさん
2013/09/11(水) 08:36:58.960200デフォルトの名無しさん
2013/09/11(水) 16:59:49.050201デフォルトの名無しさん
2013/09/11(水) 22:45:42.730202デフォルトの名無しさん
2013/09/11(水) 22:51:01.710203デフォルトの名無しさん
2013/09/11(水) 23:26:48.79時間のかかる処理だけをネイティブコードに
の方が開発しやすいかもしれない
0204デフォルトの名無しさん
2013/09/11(水) 23:30:18.160205デフォルトの名無しさん
2013/09/14(土) 03:21:57.790206デフォルトの名無しさん
2013/09/15(日) 07:46:57.160207デフォルトの名無しさん
2013/09/15(日) 08:12:11.62〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0208デフォルトの名無しさん
2013/09/15(日) 12:52:09.81てかそういう用途としてdll使うのってもう流行ってないんかな?(昔のエロゲとか)
呼び出し元を変更したらコンパイルし直しになるのはスクリプトだって同じだし、バインダも必要ない。
もっぱらLGPLの回避法としてしか見なくなった
0209デフォルトの名無しさん
2013/09/15(日) 13:28:21.980210デフォルトの名無しさん
2013/09/15(日) 14:55:12.130211デフォルトの名無しさん
2013/09/15(日) 16:54:49.610212デフォルトの名無しさん
2013/09/15(日) 17:45:32.190213デフォルトの名無しさん
2013/09/15(日) 21:06:15.98fiberやlongjmpを使ったら出来ない事はないな
だがライターにVisuaStudio入れてもらうとか出来ないだろ?
ライターには簡単にプログラムをインストール・実行できる環境が必要だ
プログラマーにも
・コンパイルから実行までが速い(実行前にネイティブコード生成とか最適化をしないから)
・リフレクションが使える
等のメリットはある
ラムダ式やデリゲートはC++11で使えることは使えるな
0214デフォルトの名無しさん
2013/09/15(日) 22:55:54.120215デフォルトの名無しさん
2013/09/15(日) 23:44:33.85boost他、標準ライブラリオンリーのイディオムも腐るほどあるし
メリットが感じられない
0216デフォルトの名無しさん
2013/09/16(月) 12:08:37.510217デフォルトの名無しさん
2013/09/16(月) 16:39:52.89しかし、マイクロソフトが行ったCOM拡張によって互換性が失われ、パソコン用アプリが
スマホでは動かないといったトラブルが起こるようになった。
0218デフォルトの名無しさん
2013/09/16(月) 16:50:37.98やっぱりIronPython/IronRubyとかになるんでしょうか?
できればLuaを使いたいのですが、LuaDowNetは随分長い間止まってますし
と質問しようと思って検索したら、AluminiumLua(2008年更新)ってのがあったので
これ試してから出直します。
すみませんでした。
ttps://github.com/chkn/AluminumLua
0219デフォルトの名無しさん
2013/09/16(月) 16:52:25.96たびたびすみません
0220デフォルトの名無しさん
2013/09/18(水) 12:01:03.07スクリプトだと一つのファイルに書ける
C++で何でもヘッダーに関数定義を書いたらコンパイル時間が大変な事になる
0221デフォルトの名無しさん
2013/09/18(水) 12:09:19.320222デフォルトの名無しさん
2013/09/18(水) 12:16:26.38一つのファイルに書けてありがたいだろ?
0223デフォルトの名無しさん
2013/09/18(水) 12:57:45.990224デフォルトの名無しさん
2013/09/18(水) 13:45:40.90Javaで書くとAndroidには移植しやすいかもしれないがiPhoneにはそのまま持っていけない
MonoはAndroid、iPhoneでも動くけど無料の開発環境なし
PCでも、未だにXPを使っている様な人はVMを入れていなかったり
その点スクリプト言語のVMは小さいから同梱しやすい
Dとか知らん!
0225デフォルトの名無しさん
2013/09/18(水) 14:47:00.98コミュニティの規模が小さいのでJScript一択
保守まで考えるとhackはproductとして採用できない
0226デフォルトの名無しさん
2013/09/18(水) 22:41:41.90Luaの方がスクリプトを書きなれているので、できればそっちを使いたいと思っていました。
JScriptの利用も少し考えましたが、利用方法がいまいちパッとしなかったので見送りました。
保守性は、個人/小規模利用なので大して気にしていません。
0227デフォルトの名無しさん
2013/09/19(木) 06:18:34.30/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0228デフォルトの名無しさん
2013/09/24(火) 01:30:13.900229デフォルトの名無しさん
2013/09/24(火) 19:59:45.110230デフォルトの名無しさん
2013/09/24(火) 21:03:42.63アプリケーション組み込みなら、mrubyでなくとも本家のrubyでもできるし
0231デフォルトの名無しさん
2013/09/24(火) 23:53:45.130232デフォルトの名無しさん
2013/09/25(水) 00:47:43.99CSVファイルからスクリプトに変換したりとか。
0233デフォルトの名無しさん
2013/09/27(金) 11:18:33.530234デフォルトの名無しさん
2013/09/27(金) 12:04:12.820235デフォルトの名無しさん
2013/09/27(金) 18:18:42.840236デフォルトの名無しさん
2013/09/27(金) 18:33:15.820237デフォルトの名無しさん
2013/09/27(金) 23:10:20.40あとはLuaでアルゴリズム組むだけでゲームを作れるようにしておくとすごい快適
個人的には各種パラメータを、数値をイジるだけじゃなく
定義を修正しまくっても余裕なのが最高
0238デフォルトの名無しさん
2013/09/28(土) 09:12:16.18Luaだと辛いなーな部分はCで書きゃいいだけ。
0239デフォルトの名無しさん
2013/09/28(土) 11:19:10.07Cのバインディングに挫折しそうになってた頃に出会ってたら危なかった
0240デフォルトの名無しさん
2013/09/28(土) 15:57:45.920241デフォルトの名無しさん
2013/09/29(日) 00:13:43.34C++側のクラスとかもそのままスクリプトで使えるよ。
0242デフォルトの名無しさん
2013/09/29(日) 02:20:08.22┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0243デフォルトの名無しさん
2013/10/10(木) 19:31:49.27http://www.lua.org/
0244デフォルトの名無しさん
2013/10/10(木) 19:33:12.350245デフォルトの名無しさん
2013/10/13(日) 01:54:16.74Luaの無名関数をC関数で受け取って、
それを、C側から任意のタイミングでコールしたいんだけど、どうしたらいいの?
lua_type()の戻り値を見ると、LUA_TFUNCTION型みたいなんだけど、これはどう扱ったらいいんだろう…
0246デフォルトの名無しさん
2013/10/13(日) 06:06:13.41luaL_refとluaL_unrefで参照数を操作して、生かして、
生かしておいたのを lua_rawgetiでスタックにプッシュして
lua_call系でいいんだね
0247デフォルトの名無しさん
2013/10/25(金) 14:27:11.51Luaにエラー関数を設定する場合は
lua_pcallにてエラー関数のスタックを設定しますが、
これをコルーチンで行う場合、
lua_resumeを呼びだすのですがエラー関数の設定が見当たらないです。
どこで設定すると呼びだされるようになるのでしょうか…。
お願いします!
0248デフォルトの名無しさん
2013/10/25(金) 15:45:29.070249デフォルトの名無しさん
2013/11/02(土) 00:38:50.34luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは
どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?
0250デフォルトの名無しさん
2013/11/02(土) 01:04:30.61値の更新をC側でできるようにしてから
C側の内部でLuaを使う
0251デフォルトの名無しさん
2013/11/02(土) 01:06:57.46すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。
0252デフォルトの名無しさん
2013/11/02(土) 10:59:08.34userdataにメタテーブルを仕込んでやればできる。他のやり方も
あると思うけど。
例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに
cfunctionを登録しておく。登録したcfuntcionではuserdataから
thisとかを取り出して何かすればいい。
0253デフォルトの名無しさん
2013/11/02(土) 12:43:26.03やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。
そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で
しようと思ってます。
教えていただいた内容を調べながら試してみます。
0254デフォルトの名無しさん
2013/11/02(土) 12:55:58.52C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。
LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる
必要があれば、252のようにする必要があるけど。
0255デフォルトの名無しさん
2013/11/02(土) 13:10:44.93初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので
出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと
中々難しいなーと思って、ロジックもluaに移そうと思っていました。
そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。
自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して
色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。
0256デフォルトの名無しさん
2013/11/03(日) 10:39:57.230257デフォルトの名無しさん
2013/11/03(日) 11:14:19.88Cならlua_pushlightuserdataでいいよ
0258デフォルトの名無しさん
2013/11/03(日) 11:24:38.17Lua側の記述とLuaチャンクの実行の仕方を工夫するしかないんじゃないか?
0259デフォルトの名無しさん
2013/11/03(日) 12:00:06.70lua_pushlightuserdata等でlua内の変数に渡しているときに、
このlua内の変数のスコープがはずれたりしたときに、
このポインタをdeleteしたいのだけどできますか?
0260デフォルトの名無しさん
2013/11/03(日) 14:45:33.09可能ならuserdataで確保したメモリそのものに割り当てるか
スマポとかで包んでからuserdataに突っ込む感じになるかと
0261デフォルトの名無しさん
2013/11/03(日) 18:17:24.790262デフォルトの名無しさん
2013/11/03(日) 21:02:45.16リファレンス見ても機能が少ないだけで何が嬉しいか分からなかった。
0263デフォルトの名無しさん
2013/11/04(月) 00:14:11.47そこまでやるならもうAngelScriptの方がいいような気がする。
0264デフォルトの名無しさん
2013/11/04(月) 00:19:18.11ポインタもってるだけだから圧倒的にシンプルだよ。luaがわでは寿命管理しないけどとにかくデータの参照を維持したい場合に使う
0265デフォルトの名無しさん
2013/11/04(月) 00:23:01.58tableじゃなくてuserdataのmetatable使うのか。面白そうなのでやってみた
配置newを定義して__gcをセットしたmetatableを設定する. gcでデストラクタを明示的に呼ぶ
class a{
void *operator new(size_t size, lua_State *L) {
void *p =lua_newuserdata(L, size);
lua_newtable(L);
lua_pushcfunction(L, gc);
lua_setfield(L, -2, "__gc");
lua_setmetatable(L, -2);
return p;
}
static int gc(lua_State *L) {
a *p = static_cast<a *>(lua_touserdata(L, -1));
p->~a();
return 0;
}
};
// newと同時にLUAスタックにプッシュされる
a *a1 = new(L) a;
0266デフォルトの名無しさん
2013/11/04(月) 01:05:41.10lua内の変数のコピーも認識できないとdeleteしていいかわからないなぁ。
0267266
2013/11/04(月) 01:11:07.790268デフォルトの名無しさん
2013/11/04(月) 01:56:57.820269デフォルトの名無しさん
2013/11/04(月) 02:42:16.330270デフォルトの名無しさん
2013/11/04(月) 03:46:09.89あんまりそういう作りになってないなぁ
0271デフォルトの名無しさん
2013/11/04(月) 09:52:17.93newではないコンストラクタを使うからできるんだよ
newを使わない保証があるなら参照カウンタもいらないよ
0272デフォルトの名無しさん
2013/11/04(月) 15:21:11.51> このlua内の変数のスコープがはずれたりしたときに、
0273デフォルトの名無しさん
2013/11/04(月) 15:38:02.02明示的なリソース廃棄処理つくらないと回避できない
0274デフォルトの名無しさん
2013/11/04(月) 16:24:50.58あはは、たしかにw
スコープがはずれたとき
ではなく
スコープがはずれたりしたとき
であるから
結局GCで事足りるなw
0275デフォルトの名無しさん
2013/11/04(月) 18:42:33.31行うなんてのはGC備えてる言語じゃ禁じ手じゃん。
C++オブジェクトに限らず、Luaオブジェクトでもスコープ外れた
タイミングで即解放なんて無理でしょ。
C++と同じようなスコープ外れて即廃棄は無理なので、それの寿命
をLuaオブジェクトで管理しようというなら設計が間違ってる。
0276274
2013/11/04(月) 19:39:14.73このケースは前者でやる必要がないからやらないだけなんだよ。
やればやれるよ?
metatableのdestructorで
時限付きにhookONしてそこでcollectすればいいだけでしょ?
で、それがなんだよって話。
0277デフォルトの名無しさん
2013/11/04(月) 22:38:46.70いやマジで
0278デフォルトの名無しさん
2013/11/04(月) 23:06:44.14http://www.javafesta.jp/2007/pdf/C1.pdf
http://www.infoq.com/jp/news/2010/11/tc-bigmemory
0279デフォルトの名無しさん
2013/11/04(月) 23:17:12.730280デフォルトの名無しさん
2013/11/05(火) 00:28:39.930281デフォルトの名無しさん
2013/11/05(火) 08:03:02.46Javaはチューニングがサーバー用だからアレだが
まあそこまでいかないと性能が出ないなら個人レベルでは無理があるわな
0282デフォルトの名無しさん
2013/11/05(火) 12:38:56.980283デフォルトの名無しさん
2013/11/05(火) 20:08:05.760284デフォルトの名無しさん
2013/11/05(火) 20:24:10.43┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0285デフォルトの名無しさん
2013/11/05(火) 23:42:30.140286デフォルトの名無しさん
2013/11/06(水) 09:10:15.250287デフォルトの名無しさん
2013/11/07(木) 07:39:13.29参照カウンタって単なるコーディングテクニックみたいなもんだから注釈なしでGCと呼ぶのは抵抗ある
0288デフォルトの名無しさん
2013/11/07(木) 09:59:04.250289デフォルトの名無しさん
2013/11/07(木) 12:43:45.41GCの実装の仕方の一つとして、参照カウントを使うものがある、といった感じ
0290デフォルトの名無しさん
2013/11/07(木) 15:16:54.50狭義では参照カウントとtracingに分けて、tracing型のみをGCとすることもある。
まだ一般的ではないが "A unified theory of garbage collection" という論文によれば、
参照カウントとtracingは双対なんだそうだ。
0291デフォルトの名無しさん
2013/11/07(木) 20:06:48.850292デフォルトの名無しさん
2013/11/15(金) 18:43:55.94つまりどういうことなのかっていうのがイマイチ掴めません
例えば、C/C++コード(DxLibやSDLなど)で適当にゲームウインドウを表示したら
あとはスクリプトコードを呼び出すだけ、という状態のことなのでしょうか?
このときに、最低限としてスクリプト側からC側の
・メインループ毎に必要な処理(DxLibのProcessMessageなど)
・キーボード・マウス・ジョイパッドなどの入力を取得する機能
・画像を表示する機能
など、呼び出すことができれば最低限ゲームっぽいことはできそうでしょうか?
そして、速度の問題がある処理はその都度C側で記述していく、とか
あるいは、あるタイミングの数値計算処理であるとか、RPGのイベントだとか
再コンパイルせずに調節したい場合にスクリプトを用いるということもあると思いますが
この場合、スクリプトを実行するVMをどのインスタンスで保持するのが良いのでしょうか
0293デフォルトの名無しさん
2013/11/15(金) 19:49:12.61それだけの話であって何から何までスクリプトということは無い
0294デフォルトの名無しさん
2013/11/15(金) 20:47:11.590295デフォルトの名無しさん
2013/11/15(金) 21:58:13.61とか、luaとゲームみたいな本には序章あたりにそういうこと書いてあるから、何冊か本屋でみてみたら?
0296デフォルトの名無しさん
2013/11/15(金) 22:02:34.14どうもありがとうございます!
いつもいつもプログラミングのみでミニゲーム作る止まりなので
スクリプト組み込みを勉強してに中規模以上のゲームを作れるようにがんばります
0297デフォルトの名無しさん
2013/12/04(水) 01:39:29.320298デフォルトの名無しさん
2013/12/15(日) 20:30:59.57やり口としてはどういうのが良いでしょうか?
今考えているのは
・会話イベントのひとまとまりごとに1ファイルで記述する
・文章を記述する前に置換文字や会話に使用するキャラクターを定義できる
・会話シーンに必要なアクション(立ち位置、表情変更など)を記述できる
想像してるイメージとしては↓な感じです
(使用スクリプト未定なので文法やメソッド名は適当です。雰囲気が伝わればいいですが・・・)
//event1.txt
//最初に置換文字や、使用キャラクターを定義
player = data.getCharacter("主人公"); //キャラ自体を取得
sub = data.getCharacter("サブキャラ");
city = data.getString("街の名前"); //置換文字として定義
//イベント開始
startEvent();
setCharacter(sub);
message(
"いらっしゃい " + player + "さん。" + BR +
city + "にようこそ。");
//キャラクタークラスはそのまま文字置換にも使えるようにする。
//BRには改行を定義しておく。
endEvent();
//
これだとダブルクォーテーションがクドい気がするので "ようこそ$[player]さん" みたいなやり方にすべきでしょうか?
0299デフォルトの名無しさん
2013/12/15(日) 20:51:22.29安直に汎用スクリプト使おうじゃなくて、まずはユースケースを洗い出してみろ
それほどいろんな機能も自由度もいらないことがわかるはず
0300デフォルトの名無しさん
2013/12/16(月) 00:21:21.85下手に高級言語にすると死ぬ
人に使わせること考えると、プレーンテキストにタグ埋めるスタイル以外はあり得ない
0301デフォルトの名無しさん
2013/12/16(月) 00:49:52.86セーブや細かい制御のことを考えると、汎用言語を使っても結局
言語内DSL的なものでデータとして埋め込むような形にしかならん
汎用言語の機能をほとんど活かせず、インタプリタを作る手間も無くならず、
ただスクリプトを書くのが面倒になるだけ
0302デフォルトの名無しさん
2013/12/16(月) 01:33:50.360303デフォルトの名無しさん
2013/12/16(月) 18:01:34.83ありがとうございます、セーブ完全に考えてませんでした。
途中セーブ考えると難易度かなり上がりますね。
0304デフォルトの名無しさん
2013/12/16(月) 21:48:48.52ADVゲームなんて保存しておくデータは少ないしな
0305デフォルトの名無しさん
2013/12/19(木) 20:06:48.550306デフォルトの名無しさん
2013/12/19(木) 21:22:15.850307デフォルトの名無しさん
2013/12/19(木) 21:35:40.70ADVは普通そんなとこでセーブする必要ないよ
もし必要になってしまってるなら設計がおかしい
0308デフォルトの名無しさん
2013/12/19(木) 21:54:56.69ADVのスクリプトみたいなプル型のインタプリタを作りやすい簡単な言語仕様で
ライブラリにソース渡したら構文解析だけやってくれればいい
0309デフォルトの名無しさん
2013/12/19(木) 22:41:18.53言うのは簡単だしいかにもそれっぽいけど単なる思考停止くさいよね
0310デフォルトの名無しさん
2013/12/19(木) 23:00:23.25EclipseのXtext/Xtendみたいなのでネイティブアプリに組み込める
ものがあったら俺も欲しいな。
0311デフォルトの名無しさん
2013/12/19(木) 23:01:36.14大枠のwhileループとifはあるにせよ、更にその中のwhileの中でセーブはともかくロードはやろうと思わない。
0312デフォルトの名無しさん
2013/12/19(木) 23:38:35.63↓
Object is a String ←設計がおかしい
0313デフォルトの名無しさん
2013/12/20(金) 01:55:56.71フラグでメッセージが変わる、とかいうのを複雑にしちゃったらそういうのが発生しそう。
0314デフォルトの名無しさん
2013/12/20(金) 12:14:01.980315デフォルトの名無しさん
2013/12/20(金) 17:12:52.37flg ? "msg-a" : "msg-b"
って書けるならそのほうがシンプル。
0316デフォルトの名無しさん
2013/12/20(金) 21:11:54.760317デフォルトの名無しさん
2013/12/21(土) 08:21:18.690318デフォルトの名無しさん
2013/12/22(日) 12:54:39.250319デフォルトの名無しさん
2013/12/23(月) 08:32:10.390320デフォルトの名無しさん
2013/12/23(月) 11:28:02.04時間がかかってはダメというのがおかしい
だからゆっくり時間をかけて慣れることが許される
0321デフォルトの名無しさん
2013/12/23(月) 12:34:02.63俺が慣れてないからforもwhileも禁止、全部ifとgotoで、って言ってた人が昔いたぞ。
>>316
既読を管理する関数 mng_read ってのを作って、
flg ? mng_read("msg-a") : mng_read("msg-b")
とするのはどう?
0322デフォルトの名無しさん
2013/12/23(月) 22:24:13.34ADVで文章部分に関数使うとか論外だろ…
それにスクリプト打つのはド素人も想定するもんだ
0323デフォルトの名無しさん
2013/12/23(月) 22:49:00.75そんなBASICでプログラミングを覚えたジジイなんて、
玉切り落としてグズの家系を根絶やしにしてしまえ。
GOTO LESSが推奨されて何年立ってると思っているんだ
0324デフォルトの名無しさん
2013/12/24(火) 09:54:37.590325デフォルトの名無しさん
2013/12/24(火) 13:19:00.89シナリオスクリプトとして考えたらはGOTOは大事だろ
IFとGOTOだけで書けばセーブデータの問題も解決するわけだし
0326デフォルトの名無しさん
2013/12/24(火) 13:43:33.10そういった場合は、遷移は別ファイルにまとめて定義が妥当
0327デフォルトの名無しさん
2013/12/24(火) 17:08:31.18ゲームのシナリオ的にはありそうじゃない。そういうのってどうしてるの?
0328デフォルトの名無しさん
2013/12/24(火) 19:11:38.28逆に言えば終了タグを必ず書くgotoなら使っていいんじゃね
0329デフォルトの名無しさん
2013/12/24(火) 19:40:46.560330デフォルトの名無しさん
2013/12/24(火) 20:16:45.260331デフォルトの名無しさん
2013/12/24(火) 21:28:56.06条件分岐使わずどうやってフラグ分岐するんだ?
>>327
そんなの見たことないが、どういうのだよ?
0332デフォルトの名無しさん
2013/12/24(火) 23:30:35.65だから別ファイル
どのシーンの次にどのシーンになるのかの
状態遷移だけを記述する言語というか
データ構造を別に準備するのさ
0333デフォルトの名無しさん
2013/12/24(火) 23:50:48.99例えばLiveMakerのシナリオ部分は文章とか画像とかの指定で
条件分岐は別になってる
シナリオ書き変えたら分岐も変わってた…なんてことはない
単純に選択肢で話が大きく分岐していくノベル用にはわかりやすくていい
でも細かいフラグ管理やパラメータ要素を入れると難しい
分岐ごとにいちいち分けて考えてたら
バグは出ない以前に途中で投げ出す可能性大
0334デフォルトの名無しさん
2013/12/25(水) 01:12:07.860335デフォルトの名無しさん
2013/12/25(水) 07:14:27.71ノベルゲーって基本テキスト主体でしょ?
逐次処理できるし、ステートの保存はフラグ一式と行番号の保存でいいし
ループ処理の構文をわざわざ用意する必要ないと思うんだけど・・・
0336デフォルトの名無しさん
2013/12/25(水) 10:33:19.18あぁ、なるほどね。
確かにそういう作り方をしてるゲームを見た事があるわ。
0337デフォルトの名無しさん
2013/12/26(木) 01:56:07.590338デフォルトの名無しさん
2013/12/26(木) 10:34:40.60クラスやコルーチンのスクリプトは組み込み言語使えば良かろ
0339デフォルトの名無しさん
2013/12/26(木) 10:38:32.16爆速コンパイルのFPCでいいと思うな
0340デフォルトの名無しさん
2013/12/26(木) 10:48:29.28ゲームのスクリプトとしては需要あるんじゃないかな。
たとえば、ある場所に来るたびに、その場所での「さっきの続き」とか。
0341デフォルトの名無しさん
2013/12/26(木) 11:18:48.57オーソドックスにフラグ立てていくなりstackでやるなりでいけるでしょ
0342デフォルトの名無しさん
2013/12/26(木) 11:41:00.70stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
0343デフォルトの名無しさん
2013/12/26(木) 11:56:29.21気分で名前が変わるくらいなら名前つけない方がよいよね
0344デフォルトの名無しさん
2013/12/26(木) 12:15:58.740345デフォルトの名無しさん
2013/12/26(木) 12:24:14.010346デフォルトの名無しさん
2013/12/26(木) 12:28:28.45> 手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
すればいいじゃない
> stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
フラグ立てていくだけだからeval出来るものなら既存の言語で簡単に出来るよ
記述が冗長でという話ならpegかなんかでちょろっとgeneratorを書いてやらいい
0347デフォルトの名無しさん
2013/12/28(土) 02:26:08.74クラスじゃなくって、インスタンスをバインドして
そいつがファクトリ的な関数いっぱい持ってたら
もうスクリプトの中でやりたい放題なんだね
0348デフォルトの名無しさん
2013/12/28(土) 13:42:09.78かつ、お作法も確立してるので楽ちんなんだよな
0349デフォルトの名無しさん
2013/12/29(日) 23:59:20.840350デフォルトの名無しさん
2013/12/30(月) 00:02:51.790351デフォルトの名無しさん
2013/12/30(月) 00:32:29.40メインループ中にスクリプトをどのように組み込んでいけばいいのかまったく検討がつきません。
RPGのマップ上のイベントであれば、マップロード時にスクリプトファイルを読み込んで
イベントを関数化しておく、などは想像できるのですが・・・
それとも、主要クラスをスクリプトエンジンへバインドしてしまって
メインループ自体をスクリプト側で記述するという方法なのでしょうか?
0352デフォルトの名無しさん
2013/12/30(月) 01:54:24.29luaとかsquirrelのようなコルーチンありのスクリプトなら、メインループから、実行中のコルーチンスレッドのresumeを個別に呼び出しする形も作れる
それぞれのスレッドで suspend()するたびに
次のフレームに処理が継続されるので、UI処理書くのにとても便利
両方実装して使い分けるのも有り。いずれの場合も、参照するオブジェクトはスクリプトから見えるようにバインドする必要はでてくる
0353デフォルトの名無しさん
2013/12/30(月) 17:04:01.21ありがとうございます!
コルーチン勉強しようと思います
0354デフォルトの名無しさん
2014/01/15(水) 01:28:40.370355デフォルトの名無しさん
2014/01/15(水) 01:32:56.880356デフォルトの名無しさん
2014/01/15(水) 18:55:31.970357デフォルトの名無しさん
2014/01/16(木) 23:05:15.79Suirrelでインスタンスを生成したとき、
boost::shared_ptrを用いたインスタンスにするにはどうすればいいでしょうか。
C++とSquirrelとで共通の参照カウンタを持たせたいと考えています
0358デフォルトの名無しさん
2014/01/16(木) 23:29:03.57そういうのが必要なケースってあるのかな?
設計を見なおしたほうがいいかも
0359デフォルトの名無しさん
2014/01/17(金) 00:50:30.25こっちでも使いたいなーと思ってました。
・C++でHogeクラス定義、公開
・Squirrelでインスタンス生成
・C++から公開しているオブジェクトマネージャへ登録
・C++側でさっきのHogeインスタンスを更新
みたいな構造を考えてました。
Hogeを継承したFooクラスとかも登録したいと考えてました。
設計考えてきます。
0360デフォルトの名無しさん
2014/01/17(金) 02:10:14.78squirrel側の参照カウンタとはダブるだけで共通にはならんけど動作自体は問題ない
0361デフォルトの名無しさん
2014/01/17(金) 04:46:37.29g_HogeManagerをC++で定義、インスタンスをSquirrelへ公開。
で、次のスクリプト関数実行。
function Func(){
local inst = Hoge()
g_HogeManager.add(inst)
}
で、C++側でg_HogeManagerの要素に対してupdateとか呼び出したいです。
Funcのスコープ抜けた時点でSquirrel側のinstの参照カウンタが0になり、
望まない形でインスタンスが破棄されてるようです。
ので、共通の形を取りたいと考えてました。
設計が悪いってのは、この周りの考え方が怪しいのかと。
0362デフォルトの名無しさん
2014/01/17(金) 04:48:04.700363デフォルトの名無しさん
2014/01/17(金) 08:09:28.29/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0364デフォルトの名無しさん
2014/01/17(金) 16:23:55.46そりやsquirrel側はC++側の参照を知らないもの。当然かと
squirrelから渡されたものは、HSQOBJECT のかたちで取得して、保持するときには sq_addref()して、不要になったら sq_release() するのが正解
0365デフォルトの名無しさん
2014/01/17(金) 18:31:37.39メモリリークの原因になりやすい
0366デフォルトの名無しさん
2014/01/22(水) 20:05:40.980367デフォルトの名無しさん
2014/01/31(金) 16:55:15.38自分で関数を作るしかない?
0368デフォルトの名無しさん
2014/02/01(土) 23:19:13.62現在、threadをidle状態にさせるために、wakeupで終了条件を渡して
threadとして実行する関数内でreturnなりさせてidle状態にさせていますが面倒です。
0369368
2014/02/02(日) 00:01:58.470370デフォルトの名無しさん
2014/02/02(日) 00:31:12.85┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0371デフォルトの名無しさん
2014/02/03(月) 05:51:52.940372デフォルトの名無しさん
2014/02/05(水) 23:25:39.46sqstd_printcallstackをラップしたのをバインドしてthreadの関数内で呼び出しても、
thread.callとかthread.wakeupんとこまでのスタックしか見れなくてデバッグが面倒
0373デフォルトの名無しさん
2014/02/06(木) 01:00:28.570374デフォルトの名無しさん
2014/02/06(木) 13:14:51.80ってことはsq_getthreadとかと組み合わせれば出来んのかな。
助かったよ、ありがとう
0375デフォルトの名無しさん
2014/02/06(木) 16:31:10.120376デフォルトの名無しさん
2014/02/06(木) 16:34:11.87スレッド制御してるVMがグローバルに一つなら、そのwakeup呼び出ししてる間は
とくに変化無いから、もうグローバルに直接参照して表示してしまうってのも一つの手だね
俺はそれぞれのスレッドのwakeupは、全部C++のメインの一カ所からしか呼ばない(親VMは登録とかにしか使わない)から上をたぐる必要は特に無い
0377デフォルトの名無しさん
2014/02/06(木) 19:41:13.19で、早速また分からんことが。
・スクリプトでnewthreadで生成したスレッドをC++にてsq_getthreadで取得
・取得したvmに対してsq_newclosure,sq_seterrorhandlerで
ランタイムエラーハンドラを設定したんだけど、
スレッド実行中にエラー出ても呼ばれないんですが原因なんでしょう。
同じノリでC++からsq_setprintfuncで出力関数をセットすると期待通りに動作するんだけど。
0378デフォルトの名無しさん
2014/02/06(木) 20:13:41.720379デフォルトの名無しさん
2014/02/06(木) 20:42:06.750380デフォルトの名無しさん
2014/02/10(月) 11:35:20.59トゥイッターで「#squirrel」を検索するとマジもんのリスばっか出てくる。
どのハッシュタグならココで扱ってるSquirrel拾えるの?
0381デフォルトの名無しさん
2014/02/10(月) 11:43:35.220382デフォルトの名無しさん
2014/02/28(金) 21:55:32.80アイテムデータを打ち込むためのフォームなどを自作しておかないと、
スクリプトの良さを生かせないなぁ、というところに行き着いてしまうのですが、
個人製作の方々はそういったものを自作していたりするんでしょうか?
むしろ、そんなところに拘るくらいならUnityや他のゲーム製作ツールについて
勉強してた方がマシでしょうか?
0383デフォルトの名無しさん
2014/02/28(金) 22:11:10.98一般的なものならinport/exportで定番どころのフォーマットは対応してるので困ることはないのではないかな
対応してないとしてもconverterを書くだけだから簡単に書ける
0384デフォルトの名無しさん
2014/02/28(金) 22:15:28.12既に道を踏み外している
ゲームを完成させたいなら計画を立て直せ
そうでないなら合理性なんか考えず好きなように楽しめ
0385デフォルトの名無しさん
2014/02/28(金) 22:17:33.95まあいいや
0386デフォルトの名無しさん
2014/02/28(金) 22:31:38.48既存のモノで、マップエディタならJsonあたりで出力できるものや、
データ入力ならCSVエディタや、既存DB用ファイルを出力するエディタあたりでしょうか?
>>384
確かに、そうですね・・・
まだ数回しかチャレンジしてないのですが、どうしても毎回、
「プログラムで直書きしたのと変わらんやんけ!」か、
「CSVで十分やんけ!」という状況ばかりになってしまって、
そこから一歩ステップアップできない感じなのです
0387デフォルトの名無しさん
2014/02/28(金) 23:01:28.08RegisterObjectType に asOBJ_POD を渡すとコンストラクタ、
代入演算子その他諸々が自動生成されるって話だけど、
asOBJ_POD | asOBJ_APP_CLASS_CONSTRUCTOR みたいにして
コンストラクタだけ独自拡張する使い方は仕様的にできるようになってるの?
0388デフォルトの名無しさん
2014/03/01(土) 07:44:24.61目的と手段が逆になってんじゃないの?
0389デフォルトの名無しさん
2014/03/01(土) 10:43:43.37普通にコンストラクタも登録できるから
公式リファレンス見ろ
0390デフォルトの名無しさん
2014/03/01(土) 11:25:09.70もしC++を使ってる人がLuaは不要だと言えば、C++の方が不要だと言い返される気がする
0391デフォルトの名無しさん
2014/03/01(土) 12:09:22.88コンシューマだったり、プログラマ以外の作業員がいたり
アドベンチャーゲームみたいなジャンルだったらメリットが大きいと思うけど
個人製作だったら別に無理して活かす必要は無いような
0392デフォルトの名無しさん
2014/03/01(土) 13:21:37.93個人製作だとスクリプトファイルとかその他リソースを再読み込みする時間の方が
長かったりするのは俺だけ?てかみんなはスクリプトファイルどれくらい分割してる?
0393デフォルトの名無しさん
2014/03/01(土) 15:07:27.08ゲームは再起動するんだから、
他のリソースふくめたロード時間は
スクリプトつかっててもつかってなくても大差ないかと
スクリプト単体のロード時間は誤差の範囲だよ。確実にコンパイル&リンク時間のが長い
0394デフォルトの名無しさん
2014/03/01(土) 15:08:56.520395デフォルトの名無しさん
2014/03/01(土) 15:29:29.09修正したファイルだけ再読み込みできるようにしておくといい感じ
0396デフォルトの名無しさん
2014/03/01(土) 15:29:47.45392じゃないけど
どのリソースを読み込むかスクリプトで指示されているから
スクリプトの再読み込みはその他リソースの再読み込みとほぼ同義で
時間がかかるって話じゃないの
だから
スクリプト単体のロード時間が誤差の範囲なのは自明で
それをコンパイル&リンク時間と比較するのはこの文脈ではナンセンス
0397デフォルトの名無しさん
2014/03/01(土) 15:47:17.62スクリプトがコンパイル時間がかからなくて便利って話は、そもそもその単純比較の場合の話だから、そのメリットが得られてないならそれは作りが悪いってことだよね。結局のところ
0398デフォルトの名無しさん
2014/03/01(土) 15:47:27.35それを実現するためには副作用を減らす設計が重要で
とりあえずスクリプトで実装して
重い処理はホスト言語で実装しなおす
みたいなボトムアップな作り方してると困っちゃうんだよね
というか困った
0399デフォルトの名無しさん
2014/03/01(土) 15:57:47.84それは「スクリプトがコンパイル時間がかからなくて便利」ってのが
真である前提の結論だろ
実際は単なる謳い文句だよねって話じゃないの?
てかスクリプト言語使う動機なんて一つじゃないんだから
そんなことで作りの良し悪し評価されたくないよな
0400デフォルトの名無しさん
2014/03/01(土) 16:47:42.14リファレンス見てもPODで自動生成されたコンストラクタに
独自拡張のコンストラクタが上書きされるとか書いてなくね?
スレの趣旨には反するけどAlcantarea使えば諸々の問題解決できるよね。
実行中のプログラムの関数を再コンパイルして差し替えてくれるVSのアドイン
ttp://alcantarea-cpp.com/
0401デフォルトの名無しさん
2014/03/01(土) 16:57:41.84副作用を減らすんじゃなくて寿命を減らせばいいと思う
修正前の古いデータが生き残らないようにする
0402デフォルトの名無しさん
2014/03/01(土) 17:09:03.44良い悪いって言葉が気に入らないなら、
設計思想が合ってない、ってことでひとつ
宝の持ち腐れにしてまで使う意味はないな
0403デフォルトの名無しさん
2014/03/05(水) 17:03:30.70C++で使えますか?
Cでの導入方法を教えて下さい
0404デフォルトの名無しさん
2014/03/05(水) 23:29:20.69冷やし中華を?
0405デフォルトの名無しさん
2014/03/06(木) 03:15:58.29何を?
0406デフォルトの名無しさん
2014/03/06(木) 04:44:07.89インクルードファイルとライブラリファイルを設定して、プロジェクトのプロパティで追加の依存ファイルにlua5.1.libを追加すればいいんですね。
後、クラスのメンバ関数をLuaから使う方法が理解できない
local 変数に関数を代入するの?
0407デフォルトの名無しさん
2014/03/06(木) 06:38:39.310408デフォルトの名無しさん
2014/03/20(木) 17:29:02.65ID:Moc5bE7b0409デフォルトの名無しさん
2014/03/20(木) 17:29:20.35ID:Moc5bE7b0410デフォルトの名無しさん
2014/03/20(木) 17:38:01.94ID:cnVVzBAE┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0411デフォルトの名無しさん
2014/04/06(日) 22:57:21.17ID:OYl5erDzコード補完が出来るオススメエディタありませんか?
cocos2d-x2.x 時代は tolua++のpkgファイルあったから
Eclipseプラグインでコード補完出来たけど
3.x は探してもpkgみつからないの・・
0412デフォルトの名無しさん
2014/04/07(月) 00:09:17.03ID:wNleVxO30413デフォルトの名無しさん
2014/04/08(火) 23:44:03.23ID:tbmdAmxpintypeってテキストエディタではダメ?
0414デフォルトの名無しさん
2014/05/11(日) 10:08:02.17ID:w7YBCIUPコードに戻す方法しらない?
0415デフォルトの名無しさん
2014/05/11(日) 11:14:07.30ID:FPHyRsPYない
0416デフォルトの名無しさん
2014/05/11(日) 12:58:32.06ID:ahIxA60ohttps://github.com/bobsayshilol/luajit-decomp
https://github.com/NightNord/ljd
0417デフォルトの名無しさん
2014/05/12(月) 21:27:31.11ID:Jr9LnoLr整数型なんていらんかったんや! というこれまでの解説は間違いだったのか?
それとも、ゲームだけでなく、カーネルに近いところでも使われ始めたからなのか?
0418デフォルトの名無しさん
2014/05/12(月) 22:45:02.79ID:rRKhLlHVテーブルの整数添え字の要素を特殊化したりとかその関係で
記憶違いだったらごめん
0419デフォルトの名無しさん
2014/05/12(月) 23:06:44.25ID:fjbQFkov満を持して登場したと思ったらさっそくdeprecatedにされたbit32ライブラリさんかわいそう
0420デフォルトの名無しさん
2014/05/12(月) 23:22:03.10ID:fjbQFkov0421デフォルトの名無しさん
2014/05/13(火) 01:10:36.92ID:1hVKdVzYNetBSDはカーネル内部でLua使えるらしいぞ
それの関係かどうかまでは知らんが
ttp://news.mynavi.jp/news/2013/10/21/016/
0422デフォルトの名無しさん
2014/05/13(火) 09:56:07.37ID:htOfSQyE/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0423デフォルトの名無しさん
2014/05/18(日) 06:43:02.86ID:cy7ef2kl0424デフォルトの名無しさん
2014/05/18(日) 14:03:13.72ID:HDWDipXQhttp://www.eluaproject.net
0425デフォルトの名無しさん
2014/06/08(日) 18:05:42.02ID:3LWaPBPWGoogleCodeのは2008年で止まってるし
0426デフォルトの名無しさん
2014/06/08(日) 20:03:09.73ID:RRJgBzCOttps://code.google.com/p/xtal-language/source/list
履歴見たら2013年11月13日が最終更新日だけど、どこ見てるんだ?
0427デフォルトの名無しさん
2014/06/08(日) 22:43:44.01ID:3LWaPBPW本当だ・・・
Downloadsのパッケージしか見てませんでした
ごめんなさい
0428デフォルトの名無しさん
2014/06/11(水) 12:26:03.22ID:nbPEp42H0429デフォルトの名無しさん
2014/06/11(水) 16:57:16.91ID:mGpoQXd/┼ (\. \! *=@ // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0430デフォルトの名無しさん
2014/06/19(木) 01:32:25.81ID:wnpllGmUNLuaをSJISに対応させる方法はないでしょうか?
NLua同梱のlua52.dllをSJIS対応版に差し替えればいいかと思ったんですが、
このdllは公式配布のものとは違うようで、ビルド方法が分かりませんでした。
dllのビルドさえできれば、Luaの字句解析部(llex.c)へのパッチの当て方は分かっているんですが…
0431デフォルトの名無しさん
2014/06/19(木) 13:05:43.69ID:CumbCiDKhttps://github.com/NLua/lua
これでしょ?
cmake->buildするだけでは?
0432デフォルトの名無しさん
2014/06/20(金) 17:24:54.94ID:N64lKT9Jビルドできました。
https://github.com/NLua/NLuaしか見てなかった・・・
0433デフォルトの名無しさん
2014/06/20(金) 17:32:59.29ID:TUABdWdOgit clone https://github.com/NLua/NLua.git
cd NLua
git submodule update --init --recursive
で入るんだけどね
0434デフォルトの名無しさん
2014/06/29(日) 14:59:39.60ID:SaBki4ZJmrubyのprint出力をホスト側で受けるにはmrb_define_methodで"__printstr__"に
関数を設定すればいいと聞いたのでそのようにしているのですが、標準出力と
標準エラー出力の区別ってできないんでしょうか?
0435デフォルトの名無しさん
2014/06/30(月) 15:10:51.45ID:02CSsGE4mruby-print/src/print.c 内の printstr で stdout とハードコーディングされてるので、stderr に出したいときはここを書き換えるか、新たに stderr に出すメソッドを追加すればいいのでは?
0436デフォルトの名無しさん
2014/06/30(月) 23:03:22.29ID:FuMPZ5KZprintstrのフックでは受け取れないメッセージがあったのでエラー出力には別のフックがあるのかと
思ったんですが、ソース見てみたらそこかしこでfwrite使って直接出力してますね。
確かにこれだと自分でソースいじらないとならないですね。
0437デフォルトの名無しさん
2014/07/02(水) 16:59:10.88ID:JkuzDLMY4、5年ぐらい前の奴なら英語サイトの奴があるけど、最近はどうなのかなと思って。
0438デフォルトの名無しさん
2014/07/02(水) 21:40:33.67ID:z0TOEu0hpythonだとpypy?
luajitは今後5.3移行にちゃんと追従してくれるか心配だね。
組み込み用としてのメリットはluaには他にもいろいろあるだろうけど
jit環境が追従していかないとmrubyあたりに追い抜かれる?
0439デフォルトの名無しさん
2014/07/03(木) 07:39:27.54ID:FjTkZ2C10440デフォルトの名無しさん
2014/07/05(土) 14:29:38.02ID:MeYLeon+0441デフォルトの名無しさん
2014/07/05(土) 21:54:08.81ID:K5ikJkFlASがのけ者にされてたからちょっと安心した
0442デフォルトの名無しさん
2014/07/06(日) 06:19:08.04ID:xkFVsdDOこれコンパイル時に全部型チェックしてくれるの?
0443デフォルトの名無しさん
2014/07/06(日) 12:38:13.11ID:uyyLiQuXという疑問が拭えないことだ
0444デフォルトの名無しさん
2014/07/07(月) 01:12:10.12ID:KmCWtuSaどうしてもスクリプトにしないといけない箇所があったときは
慣れ親しんだC++に近い文法でスクリプト書けるってのは凄い利点だよ
0445デフォルトの名無しさん
2014/07/07(月) 01:43:37.99ID:PzOLkwtR思い込み以外では存在しない訳で
0446デフォルトの名無しさん
2014/07/07(月) 01:49:05.61ID:X/HL5rf/0447デフォルトの名無しさん
2014/07/07(月) 02:26:29.42ID:amtUtvKD組み込みやすくもないし
書きやすくもないんだよね
しいて言えば
スクリプタを管理する立場の人にとっては
手間が減り楽が出来るのかもしれないね
現実社会でもよく見られる構図だけど
奴隷頭ってやつだな
0448デフォルトの名無しさん
2014/07/07(月) 07:47:10.67ID:3MsBFfONただし英語程度はできることが前提だが。
0449デフォルトの名無しさん
2014/07/07(月) 09:42:19.00ID:n/CZjLr00450デフォルトの名無しさん
2014/07/07(月) 10:01:11.88ID:kMcKP8+60451デフォルトの名無しさん
2014/07/07(月) 10:23:10.27ID:KmCWtuSaC++で作ったMOD前提のM.U.G.E.Nみたいな2Dゲーム
キャラクターの描画・行動全て自由に作れるようにするとしたら
スクリプトじゃなくて何にすればいい?
0452デフォルトの名無しさん
2014/07/07(月) 11:08:37.90ID:m9tAIraA制御のインターフェースが外部に全部公開されてるってことだよね
0453デフォルトの名無しさん
2014/07/07(月) 22:51:51.30ID:KmCWtuSa書き方が悪かったな
MOD前提のC++で作った・・・だわ
0454デフォルトの名無しさん
2014/07/08(火) 14:33:11.22ID:x77uNS3Eヘッダ1個インクルードしてライブラリファイル1個リンクするだけでOK。
0455デフォルトの名無しさん
2014/07/08(火) 15:54:28.60ID:t9t2Zfam0456デフォルトの名無しさん
2014/07/08(火) 15:56:54.46ID:t9t2Zfam×Environment → ○Engine
0457デフォルトの名無しさん
2014/07/08(火) 23:53:13.46ID:jARkErFjC++に特に思い入れのない人にとっては
何でC++の持つ恩恵が受けられる訳でもないスクリプトにまで
C++の流儀を持ち込まねばならんのだ
という感情があるということを
AngelScript推進派は意識した方がいいと思う
AngelScriptに懐疑的な人に対して
>>444みたいなアピールは無意味どころか逆撫でしてるんじゃない?
0458デフォルトの名無しさん
2014/07/08(火) 23:55:23.17ID:jARkErFj人にモノを薦めるときは相手の考えも尊重してね
という話
0459デフォルトの名無しさん
2014/07/09(水) 00:01:15.25ID:yWtVDAf2コンパイル時型チェックしてくれる組み込めるスクリプト言語って他にないの?
0460デフォルトの名無しさん
2014/07/09(水) 00:02:36.15ID:6stlqCZCじゃ今度からAngelScriptの話をするときは「(個人の感想です)」って末尾に付けるわ
0461デフォルトの名無しさん
2014/07/09(水) 00:08:24.48ID:HW4kwc6W0462デフォルトの名無しさん
2014/07/09(水) 00:27:27.75ID:q6W6WKLrBotや荒らしの類にしか見えないんだよ
本気で貢献したい、広めたいと思うなら
リファレンスの翻訳したり
サンプルコードを提示したりと
やることはいくらでもあるでしょ?
どっかの国のじゃないんだからさぁ
ま、流行らないと思うけども
0463デフォルトの名無しさん
2014/07/09(水) 00:43:58.35ID:ay8R5j5j同じ系統の言語を二個使ったら何ができるのかが分からない
0464デフォルトの名無しさん
2014/07/09(水) 00:55:53.38ID:Pn1IATNtこういう場面で使えるよって返したつもりだったけど
無意識のうちに、C++すら理解できない能無しの劣等感を煽っちゃったんだね。
ごめんね。
0465デフォルトの名無しさん
2014/07/09(水) 01:03:57.02ID:6stlqCZCその超人様がコンパイル時型チェックに頼る凡人を見下すのは当然ですね
0466デフォルトの名無しさん
2014/07/09(水) 01:15:00.10ID:q6W6WKLr誰だよお前はw
0467デフォルトの名無しさん
2014/07/09(水) 07:00:19.88ID:D5g6nYoo0468デフォルトの名無しさん
2014/07/09(水) 08:20:34.04ID:dnhlgLoJ0469デフォルトの名無しさん
2014/07/09(水) 08:35:39.86ID:dUvUmdvTみんな知ってるね。
0470デフォルトの名無しさん
2014/07/09(水) 19:01:55.74ID:r8cQgObV悪いのはソレを使う人間だよ
0471デフォルトの名無しさん
2014/07/09(水) 19:50:22.95ID:ay8R5j5j0472デフォルトの名無しさん
2014/07/09(水) 20:24:17.88ID:yWtVDAf2型付けが?それとも実行環境が?
0473デフォルトの名無しさん
2014/07/10(木) 14:37:45.84ID:QqTFR8Ev0474デフォルトの名無しさん
2014/07/10(木) 16:01:45.19ID:iwrqfwZm0475デフォルトの名無しさん
2014/07/11(金) 01:37:33.79ID:hJn+b6B7a.luaとb.luaというファイルがあったとして、a.luaにmodule("a")って書いておけばb.luaからrequire("a")でa.luaを参照で生きるってのは分かるんだけど
a.luaもb.luaもアーカイブ内にあって(例えばZIPにスクリプトが固めてある状態で)アーカイブから直接
スクリプト文字列をロードしてlua_Stateつくったとするじゃん?そしたらb.luaからa.luaってどうやって参照するの??
a.luaをロードしたlua_Stateと、b.luaをロードしたlua_Stateはそれぞれ完全に独立してるわけじゃん?
a.lua内でmodule("a")とかやっても、それはb.luaにとっては全く無関係な話しじゃね?っていう
0476デフォルトの名無しさん
2014/07/11(金) 02:45:06.27ID:Mxpl8CKXdostring
はい
はい
0477デフォルトの名無しさん
2014/07/11(金) 04:09:49.02ID:D40A4FPHrequireの公式マニュアル読めばモジュールの検索手順載ってるからそれ読んどいてね
require経由で独自のアーカイブからファイルを読みたいなら
package.preloadのメタメソッドに自前のローダを仕込むとかトリックを使うことになるよ
0478デフォルトの名無しさん
2014/07/11(金) 07:07:35.10ID:TT3tD9Otスクリプトをロードすると関数がつくられる (lua_Stateではない)
各々の関数はグローバル変数を共有できる (完全に独立してない)
モジュールの使い方はバージョン毎に改善されているが
グローバル変数の使い方はあまり変わってないので使い方が分からない人はいないと思う
0479デフォルトの名無しさん
2014/07/11(金) 07:47:48.30ID:XCAXgxw4ttp://p-monster.hatenablog.com/entry/2013/02/13/205419
0480デフォルトの名無しさん
2014/07/11(金) 07:50:22.67ID:XCAXgxw4ttp://ar.aichi-u.ac.jp/blog/lua/lua.html#id.2.2.0
0481475
2014/07/11(金) 14:00:17.28ID:snzc4mzLpackage.preloadとかの説明は読んでたけど、このテーブルが異なる lua_State 間で共有される
情報だとは思っていなかった
結局メタテーブルいじるのは面倒なので、単に
int lua_include(lua_State *ls) {
const char *scriptname = lua_tostring(ls, 1);
const char *source = GetStringFromArchive("data.zip", scriptname);
lua_dostring(ls, source)
return 0;
}
みたいな関数を登録して、スクリプト内から include("a.lua") って呼んで使うことにしたよ。みんなありがとう
0482デフォルトの名無しさん
2014/07/13(日) 17:10:55.13ID:kuvdsVq2ランダム変数を使って、タッチする位置とタイミングを微妙に変えつつ、
位置とタイミングをある程度の範囲内に抑えたいのですが、
x1=math.random(14,134);
y1=math.random(280,314);
a1=math.random(-1,+1);
a2=math.random(-1,+1);
t0=math.random(80000,85000);
t1=math.random;(50000,50100);
touchdown(0,x1,y1);
usleep(t0);
touchup(0,x1+a1,y1+a2);
usleep(t1);
usleep(300000);
まったく反応しません
どうしてでしょうか
0483デフォルトの名無しさん
2014/07/13(日) 17:13:44.99ID:kuvdsVq2◯ t1=math.random(50000,50100);
直したけど動きません
0484デフォルトの名無しさん
2014/07/13(日) 17:20:13.38ID:kuvdsVq2+が余計でした
0485デフォルトの名無しさん
2014/07/13(日) 23:51:22.63ID:oRazOMf+まあ、同じ行に命令を並べる時は必要になるから、念のため常につけておくってのはアリだと思うけど。
0486デフォルトの名無しさん
2014/07/15(火) 22:41:15.80ID:4Hk/aMI9というかどういう風に使うもんなの?
0487デフォルトの名無しさん
2014/07/18(金) 07:19:05.42ID:MNjetX+mマニュアルやら
http://sceneryandfish.withnotes.net/?p=1908
などでも触れてるけど
数十行レベルでしょのシンプルなソース見ちゃうのが手っ取り早いと思うよ
0488デフォルトの名無しさん
2014/07/21(月) 12:06:25.68ID:MDGKsYd9何か重要なバグフィックスらしい。
0489デフォルトの名無しさん
2014/07/21(月) 16:26:34.64ID:CPAJhmykこれか
メモリ関連のバグフィクスと、出力されるバイトコードがおかしくなるバグの修正かな
0490デフォルトの名無しさん
2014/08/11(月) 22:58:35.99ID:xLVZtjTFバージョン番号がいまいちわからないんだけど
stable版ってどれなんだろ
0491デフォルトの名無しさん
2014/08/12(火) 02:19:26.71ID:Hfmn/cHaここで質問してもいい?
0492デフォルトの名無しさん
2014/08/12(火) 02:55:05.48ID:QZJQGyIxいいよ
寂れてるし。
0493デフォルトの名無しさん
2014/08/12(火) 05:31:01.87ID:7nSDT24wあれば買うが、難しい本はいらん
0494デフォルトの名無しさん
2014/08/12(火) 06:24:10.22ID:FZ4QQEE/0495デフォルトの名無しさん
2014/08/12(火) 08:49:45.55ID:Hfmn/cHaauto touchの関数についてhttp://autotouch.me/?page_id=269
alert("Hello world!"); hello world!と表示する
vibrate(); -- 一回振動する.
tap(100, 200); -- 座標(100, 200)をクリックする.このあたりは実際にauto touchで実行できたんだ。
画像aがあるときにaをタップ
っていうのはfindImageTap {imagePath="/var/A.png", count=1};
だと思うんだけど出来なくて困ってる。
0496デフォルトの名無しさん
2014/08/12(火) 09:06:36.78ID:5U2rS/IR0497デフォルトの名無しさん
2014/08/12(火) 14:26:34.31ID:Hfmn/cHa別過去スレでやってる人がいて、その人のスクリプトはこんな感じなのね。↓
まだボタン一つ押せただけで大した事できてないけど、、、
スクリーンショットとって、PCで画像切り抜き、サイズ変えないで保存して上手くいった。
あいぽんで編集するとサイズ変わってしまって上手くいかなかった。
あとはマニュアル通り
ボタンの画像を少し小さめに切抜き、find image
すると、ボタンの中の座標返すからそのままtouchdown
してあげると良いみたい
local ok;
ok = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ok.png", count=1};
for i, v in pairs(ok) do
touchDown(0,v[1],v[2]);
usleep(100000.00);
touchUp(0,v[1],v[2]);
end
画像はこんな感じ。カメラロールに保存しちゃうと拡大されちゃうけど、ホントは等倍ね
http://i.imgur.com/nJymDHf.jpg
とのことなんよ。画像を見つけたらfor以下をループってことなのかな?
0498デフォルトの名無しさん
2014/08/12(火) 18:35:02.04ID:XJm7PWEz何が分からないんだろ
0499デフォルトの名無しさん
2014/08/12(火) 20:58:16.89ID:Hfmn/cHaangeっていう画像を見つけたらタップっていう動作を組む方が簡単そうなので
findImageTap{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1};
っていうのに変えてもうまくいかない。
iphoneでスクショ撮る→PC繋いで画像ダブルクリック。スクショしてペイントに貼り付け。4×4ドットで切り取りしてange.pngで保存。
iexplorer経由でIMGフォルダに保存。
そもそもの画像の保存方法がダメなのかな?
0500デフォルトの名無しさん
2014/08/12(火) 21:54:52.06ID:XJm7PWEzマッチしてるか確認
local result = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1}
alert(#result)
これが0なら拾えていないので画像に問題ありなので画像作成に工夫する
1なら拾えているので他に問題あり
考えられるのはtap対象自体がイベントを処理していないか
当たり判定の範囲外
前者は手動でtapして反応するか確認
後者はresultの中身に入った座標を参考にしながらtap関数で確認
alertの仕様が分からないので
alert(tostring(#result)) や
alert(""...#result)などとする必要が有るかも知れない
0501デフォルトの名無しさん
2014/08/12(火) 22:22:09.25ID:Hfmn/cHalocal result = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1}
alert("#result")
で反応無かったので画像の保存の仕方がいけなかったみたい。
ちょっと保存方法変えてみます。
0502デフォルトの名無しさん
2014/08/12(火) 22:37:13.67ID:XJm7PWEz>alert("#result")
誰がそんな事言ったよ
てかそれで反応がないならおかしいぞ
0503デフォルトの名無しさん
2014/08/12(火) 22:38:29.15ID:wYq/8Bw70504デフォルトの名無しさん
2014/08/12(火) 23:01:41.48ID:XJm7PWEzhttps://teachme.jp/contents/16546
見る限りリモートデバッグも出来るようだから
そっちの環境を作るのが先かもね
0505デフォルトの名無しさん
2014/08/25(月) 10:39:27.72ID:BL3IV/EG組み込みの文字列、配列、連想配列に std::string, vector, map を
そのまま使っているほどには、C++のクラスをバインドするには親和性が高そう。
比較的、型の扱いが厳密なのが特徴かな。 クロージャは無いかも。
0506デフォルトの名無しさん
2014/08/25(月) 18:26:32.35ID:eFSdMsqd0507デフォルトの名無しさん
2014/08/25(月) 19:18:08.37ID:8RrIpfE5割とオーソドックスな文法だね
defでの関数定義時に、annotationとguardを設定できるのはちょっと面白い
(いまいち使い道は思いつかない)
バージョン5.3まで行ってる割にはドキュメントが弱そうに(個人的には)見えるけど
それだけシンプルって事なのか、それともdoxygenの使用にこだわっているせいなのか
0508デフォルトの名無しさん
2014/08/25(月) 21:14:31.71ID:wLUoTrN4C++による仮想コードでスクリプトのドキュメントを生成していて、
doxygenの中にスクリプトとC++ APIの両方が書かれているみたい。
ただ、":=" と "=" の動作の違いとか、基本的なことが書かれてない気がする。
割り切った設計はなかなか面白いのだけど、いろいろと惜しいな。
0509デフォルトの名無しさん
2014/08/26(火) 09:41:08.11ID:laXhI8kBFunction Definition ::= [annotation + CR/LF] "def" identifier "(" [arg ("," arg)*] ")" [":" guard] block
annotation ::= ???
CR/LF ::= ???
identifier ::= ???
arg ::= ???
guard ::= ???
block ::= ???
訳わからん
0510デフォルトの名無しさん
2014/08/26(火) 12:16:11.13ID:c1R9OiEG関数定義のシンタックスが書いてあるだけだぞ。
annotation: meta-annotation on function, currently used as documentation. Optional.
identifier: name of function. Required.
args: comma-delimited list of parameter names. Optional.
guards: guarding statement that act as a prerequisite for the function. Optional.
{ }: scoped block as function body. Required.
0511デフォルトの名無しさん
2014/08/26(火) 21:00:26.29ID:CrpVQ0Deこれが訳分からんならお前には色々と難しいな
0512デフォルトの名無しさん
2014/08/26(火) 21:58:18.18ID:laXhI8kB非終端記号混じりで定義するなら
それらの定義もしっかりやれよって話
>>511
俺には無理
annotation
1行目のみ#までの空白タブは読み捨てるが2行目移行は読み捨てない
Annotationとキーワード"def"がある行の間に空行はいくら入ってもいいが空白行やコメントは不可
こんなソース見なきゃ分かんねーよ
0513デフォルトの名無しさん
2014/08/27(水) 06:44:36.56ID:4iKpxsh4確かにannotationは説明不足だな
他のコメントは // でも /* */ でもいいのに、ここは # のみだし
複数行の扱いとか、get_annotation() で先頭の # が除外されないのも微妙
マニュアルがどうこう以前に、annotationの仕様がこなれていないんじゃないかな
「関数の直前のコメントは、その説明とみなす」というアイデアは嫌いじゃないが
0514デフォルトの名無しさん
2014/08/27(水) 07:39:39.64ID:3/KZIqq30515デフォルトの名無しさん
2014/08/27(水) 07:50:51.23ID:EpvBGjSy0516デフォルトの名無しさん
2014/08/27(水) 09:13:33.41ID:6IT+XF7c競争原理が鬱陶しいなら競争をやめればいい
0517デフォルトの名無しさん
2014/08/27(水) 15:44:42.46ID:4iKpxsh4多少複雑なことをやろうとすると segfault で落ちる。
GCがC++任せ(参照カウント)なのに、オブジェクトの生存期間の制御が甘いようだ。
良いバインダではあるけど、良いエンジンではないな。
0518デフォルトの名無しさん
2014/08/28(木) 13:22:05.82ID:wsbnD5TY0519デフォルトの名無しさん
2014/09/01(月) 03:56:01.22ID:ruMjAUJpいいよ
寂れてるし。
0520デフォルトの名無しさん
2014/09/07(日) 20:51:30.64ID:ppGxj2XK0521デフォルトの名無しさん
2014/09/07(日) 21:16:45.63ID:V4yJXxP40522デフォルトの名無しさん
2014/09/08(月) 08:36:00.81ID:YMBZ0Z5D> auto touchっていうアプリのスクリプトがLua言語でちんぷんかんぷんで。
> ここで質問してもいい?
>
> 492 自分:デフォルトの名無しさん[sage] 投稿日:2014/08/12(火) 02:55:05.48 ID:QZJQGyIx
> >>491
> いいよ
> 寂れてるし。
> 518 名前:デフォルトの名無しさん[sage] 投稿日:2014/08/28(木) 13:22:05.82 ID:wsbnD5TY
> >>495と同じようにauto touchで動かすLuaの質問してもいいかな?
>
> 519 自分:デフォルトの名無しさん[sage] 投稿日:2014/09/01(月) 03:56:01.22 ID:ruMjAUJp
> >>518
> いいよ
> 寂れてるし。
0523デフォルトの名無しさん
2014/09/08(月) 08:43:07.21ID:YMBZ0Z5D0524デフォルトの名無しさん
2014/09/09(火) 08:11:02.05ID:2JmvO9sZ0525デフォルトの名無しさん
2014/09/13(土) 13:49:43.66ID:HQ53r6lEクロージャをなくして関数束縛とラムダに分離したらRubyよりも手軽に使えそう。
0526デフォルトの名無しさん
2014/09/13(土) 14:34:10.13ID:xYGMnmOJというか規模から考えて現状でもRubyより手軽に使えるはずだし
ちょっと文法変えた程度じゃ手軽さの関係は変わらんだろう
ついでに文法だけならもっとマシな言語いくらでもあるだろ
Luaは処理系実装・実績を含めて初めて評価される類だと思う
0527デフォルトの名無しさん
2014/09/13(土) 14:59:46.23ID:2mQgH8ds0528デフォルトの名無しさん
2014/09/13(土) 15:33:20.77ID:y8nlksus一般業務なら Battery Included な環境のほうが便利なんじゃないか?
組み込み言語のライブラリの貧弱さは、サンドボックス内で使われるからこそ許される(し、好まれる)のでは。
0529デフォルトの名無しさん
2014/09/13(土) 17:15:36.86ID:CqCzoC9Oつまり宣言の内容より位置に意味があるから省略できない
0530デフォルトの名無しさん
2014/09/13(土) 17:22:33.96ID:xYGMnmOJ配慮しなくてもいいような
0531デフォルトの名無しさん
2014/09/13(土) 17:39:51.70ID:y8nlksusLuaではlocalを省略するとグローバル変数になるから、位置以前の問題では。
>>530
C++だと変数の宣言位置によって、そのコンストラクタが走るタイミングが変わるぞ。
0532デフォルトの名無しさん
2014/09/13(土) 17:40:19.61ID:CqCzoC9Oこれが大成功してしまったから
位置の考え方は間違ってないと思う
0533デフォルトの名無しさん
2014/09/13(土) 17:58:11.94ID:xYGMnmOJC++でもコンストラクタが走るタイミングで結果が変わるコードは
クソに分類されると思うが
菱形継承がタブーなのを見れば明らか
>>532
構造化プログラミングで考える「位置」は
階層で十分であって「行」ではないような
0534デフォルトの名無しさん
2014/09/13(土) 18:13:48.15ID:2iAULK/tfunction宣言ってそもそもクロージャの作成と変数への代入のシンタックスシュガーに過ぎないんじゃなかったっけ?
0535デフォルトの名無しさん
2014/09/13(土) 18:52:34.79ID:y8nlksusコンストラクタにも実行コストがあるから、必要になるまでは遅らせるのが常識。
例えばその変数の初期化前に分岐があるような場合。
また、ロック/アンロックに RAII を使うようなイディオムは、当然ながら「コンストラクタが走るタイミングで結果が変わる」。
もちろん、Luaではコンストラクタのような自動的に実行されるコードはないから関係ないが。
あと、この文脈では菱形継承はまったく関係ない。
話がC++への批判に摩り替わっていないか?
0536デフォルトの名無しさん
2014/09/13(土) 19:14:15.92ID:xYGMnmOJ極端な例として菱形継承を挙げただけだよ
とりあえずここLuaと愉快な仲間たちのスレなんで
0537デフォルトの名無しさん
2014/09/13(土) 19:15:15.01ID:CqCzoC9O関係ないかもしれないけど
関数束縛が代入の構文糖である言語は
前方参照をすると失敗する場合がある
0538デフォルトの名無しさん
2014/10/03(金) 07:43:15.70ID:lGjxzjS9\ ヽ ) ) \\ \\
( \ \∩___∩ \\
\ \ ⌒⌒| ノ ヽ \\
\ \ / ● ● ト、\ \\\
\ Y | ( _●_) ミ\ \\\
\ / 彡、_ |∪| ノ \ \\\
(____)―ヽノ' ヽ  ̄ ̄ ヽ\\
\, j l l .l }
Lua! l (_ノノノノ
0539デフォルトの名無しさん
2014/10/11(土) 11:25:02.83ID:9ZTN9fQflua.eっていう拡張子のものがいくつかあって開けない
ググッてもわからないんだけどlua.eの形のものは何なんだろう
見れるエディタも教えてもらえるとありがたい
0540デフォルトの名無しさん
2014/10/11(土) 11:30:28.22ID:9ZTN9fQf0541デフォルトの名無しさん
2014/10/12(日) 05:12:57.70ID:94OdN8X7( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0542sage
2014/10/12(日) 13:45:43.55ID:i7kDtML/local function main()
NUM_DATA = 10
x = {9,4,6,2,1,8,0,3,7,5}
function BubSort(x,n)
for i=1,i<=n do--エラー
for j=n,j>i do
if(x[j-1] > x[j+1]) then --前の要素が大きかったら
x[j],x[j-1] = x[j-1],x[j]--交換
end
end
end
end
function ShowData(x,n)
for i,v in pairs(x) do
print(v)
end
end
--s print("ソート前")
ShowData(x,NUM_DATA)
print("\n\n")
BubSort(x,NUMDATA)
-- print("\nソート後\n")
ShowData(x,NUM_DATA)
end
main()
と書いた時に7行目でattempt to compare two nil valuesと出てしまいます
解決策がありましたらご享受していただけないでしょうか
0543デフォルトの名無しさん
2014/10/12(日) 14:10:33.80ID:UZYaSt7F0544542
2014/10/12(日) 14:32:29.24ID:i7kDtML/'for' limit must be a number
と出ました 自分のほうでもいろいろ試してみます
回答ありがとうございました
0545デフォルトの名無しさん
2014/10/12(日) 14:40:16.19ID:UZYaSt7F↓
BubSort(x,NUM_DATA)
0546542
2014/10/12(日) 14:48:18.55ID:i7kDtML/ありがとうございます、今度は八行目で
attempt to compare number with nil
で出ました、、何度もすみません 自分でも試行錯誤してみます
0547デフォルトの名無しさん
2014/10/12(日) 14:59:53.88ID:UZYaSt7Fif(x[j-1] > x[j+1]) then
↓
for j=n,i+1,-1 do
if(x[j-1] > x[j]) then
0548542
2014/10/12(日) 15:02:46.29ID:i7kDtML/に書き換えました
0549542
2014/10/12(日) 15:06:31.21ID:i7kDtML/0550デフォルトの名無しさん
2014/10/12(日) 20:01:27.77ID:e2Gzikyq俺が勝手に褒めておいてやるよ
ただ、プログラミング言語だけでなく日本語でも会話して欲しい
0551デフォルトの名無しさん
2014/10/13(月) 01:38:05.54ID:B15n5qdAmrubyを組み込んでみた
肝心のLuaとの比較だけどLuaもrubyも素人の俺には
よくわんないっていう
ただスクリプトでのゲーム開発ってのは楽しいな
0552デフォルトの名無しさん
2014/10/17(金) 23:51:55.26ID:9a/zPdtMプログラミング言語のくせになんでネットワークライブラリ必須なんだよ。
0553デフォルトの名無しさん
2014/10/18(土) 06:17:24.91ID:0zghehpUデフォルトでネットワーク処理を持っているのを期待するのはさすがに酷だ
0554デフォルトの名無しさん
2014/10/20(月) 02:20:43.02ID:9ZZuBDyz本家は5.3αまで進んだのに
0555デフォルトの名無しさん
2014/10/20(月) 07:51:24.76ID:887X5tQi/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0556デフォルトの名無しさん
2014/10/20(月) 14:01:39.85ID:XKh/BlSi単に分散が売りの一つだからでは?
トラブってるなら環境明記するといいよ
0557デフォルトの名無しさん
2014/10/20(月) 14:28:44.63ID:YmKa11RJ0558デフォルトの名無しさん
2014/10/24(金) 22:05:25.23ID:LtvHolRf0559デフォルトの名無しさん
2014/10/31(金) 08:02:57.83ID:b+WwLJWx- Basic UTF-8 library
- Bitwise operators
- Integers
0560デフォルトの名無しさん
2014/10/31(金) 21:03:36.77ID:tMdLNX3k5.2以降からすでに文字列にバイナリデータが入るからUTF8を保持できる
stringのソース斜め読みした感じだとあんまし変化ない
Windows版とかにするにはかなり手を入れないといけないね
0561デフォルトの名無しさん
2014/11/02(日) 22:58:25.53ID:uPMt2D9i手が入ったのはutf8モジュール。 例えば string.len() はバイト数だが、utf8.len() は文字数になる。
「Windows版」がutf16を指すなら、適当にエンコード変換して、別の文字列かuserdataで保持するのは簡単。
もし、内部のcharをwchar_tに変更する改造する意味なら、確かに手間がかかる。
0562デフォルトの名無しさん
2014/11/02(日) 23:54:52.14ID:TF4Q/5Ab0563デフォルトの名無しさん
2014/11/03(月) 00:57:50.97ID:ZMCFj896という曖昧な前提で申し訳ないけど
1文字==1文字型の表現できず可変長になるから
結局sjis,utf8を扱うのと同じでメリットないんだよね
A/Wだけでなく8/DなどAPIレベルで対応しないとどうにもならないんじゃないかな
間違えてたらすまん
0564デフォルトの名無しさん
2014/11/03(月) 02:05:27.09ID:7uHWyuXV変換結果をGCの管理情報と関連付けてキャッシュすれば
最小限の回数になるので問題はない。
http://sourceforge.jp/projects/lua-naka/
あとはutf8というクラスやfile関係検討して
どの程度の手間が掛かるか検討だね
beta外れるまで待ったほうがいいかどうかとね。
0565デフォルトの名無しさん
2014/11/03(月) 03:29:16.31ID:ZMCFj8960566デフォルトの名無しさん
2014/11/03(月) 08:35:18.03ID:7uHWyuXVXP以降のWindowsのUNICODEは16bitの可変長。
1文字==1文字になってしまうのはそのライブラリが対応できてないだけ。
対応できてなければ、たとえばフォントの名前が文字化けするとか
変なところで不具合が発生する。
ダウンロードしたファイルの中身にどんな言語が使われているか
予想できない時代だしねえ。
0567デフォルトの名無しさん
2014/11/03(月) 09:03:59.77ID:gXKeHKY3あんまり使いどころがないんだよなぁ。
0568デフォルトの名無しさん
2014/11/03(月) 09:44:26.28ID:TIQQD+z7WCHARだからマルチバイト文字だし、ダウンロードしたファイルの中身はどうしようもないのは同じだけどな!
0569デフォルトの名無しさん
2014/11/03(月) 11:48:44.03ID:T6nh4Wfvマルチバイトのまま処理するのでだいたい事足りるけど、
絵文字ニーズがでてきてしまって困ってる
サロゲートペアとかをシンプルに処理できる手頃で小さめなライブラリどっかにないかな
0570デフォルトの名無しさん
2014/11/04(火) 09:05:41.39ID:bzlUuRTbサロゲートペアってUTF-8なら、単なる「バイト数が多いマルチバイト1文字」じゃなかった?
UTF-8を適切に扱えるライブラリを探せば良いのでは?
UTF-16ベースで、1文字=1wcharで処理するものはダメだね。
0571デフォルトの名無しさん
2014/11/04(火) 09:14:34.96ID:lCpWe+1kWINAPIまたはWINDOWSアプリに渡す場合だけ変換するってのが無難だろう。
0572デフォルトの名無しさん
2014/11/04(火) 12:26:39.85ID:JSkttuhxそれが正式な仕様なんだけど、
世の中にはUTF16をべたにUTF8展開しただけ、
というファイルがあふれてて、UTF-8的に二文字になってることのが多くていかんともしがたいのん
0573デフォルトの名無しさん
2014/11/04(火) 13:23:26.98ID:99dxtSJ/0574デフォルトの名無しさん
2014/11/04(火) 16:39:35.13ID:8lAd+EdW0575デフォルトの名無しさん
2014/11/04(火) 18:02:59.37ID:OadM+d9h0576デフォルトの名無しさん
2014/11/04(火) 18:40:40.27ID:lCpWe+1kWindowsのwstringと互換だからホストから見て扱いやすいという判断でないの?
Windows用のC++のランタイムがサロゲート対応できてないわけだし。
それはそれとして
自分的にはUTF16とUTF8の変換はコストが低いと考えている。
なんでかというと、マルチバイトのアプリケーションが末尾AのAPIを呼んだ時に
カーネル側での変換の対象になっていると考えるし、
それでいて今まで問題になっていないから。
0577デフォルトの名無しさん
2014/11/05(水) 07:35:22.74ID:9E/cXL42Windows氏ね
0578デフォルトの名無しさん
2014/11/05(水) 14:55:13.19ID:C/jbA3HR0579デフォルトの名無しさん
2014/11/05(水) 17:30:58.35ID:5alChkxaただ、既存のコマンドとかの整合性が問題。
0580デフォルトの名無しさん
2014/11/05(水) 17:32:35.49ID:9E/cXL42Windows氏ね
0581デフォルトの名無しさん
2014/11/05(水) 21:07:16.47ID:pM6wUNVX特定のプラットフォームに「氏ね」言う奴がマルチプラットフォーム語るか。
0582デフォルトの名無しさん
2014/11/05(水) 21:42:16.61ID:5alChkxaMacユーザーは宗教で使っている。
Linux/bsdユーザーはソースコードを蹂躙するために使っている。
0583デフォルトの名無しさん
2014/11/05(水) 23:18:38.50ID:hGDSCPPHよっぽど実際的な問題だと思うんだが
0584デフォルトの名無しさん
2014/11/05(水) 23:28:46.45ID:5iseFbl10585デフォルトの名無しさん
2014/11/06(木) 11:07:16.22ID:ElrQPnL20586デフォルトの名無しさん
2014/11/06(木) 11:37:03.69ID:5j6hC+wL0587デフォルトの名無しさん
2014/11/06(木) 12:48:03.08ID:QHCs9rG10588デフォルトの名無しさん
2014/11/06(木) 16:09:06.32ID:M2Yo7uIT0589デフォルトの名無しさん
2014/11/06(木) 16:14:45.84ID:pZw/zM7a0590デフォルトの名無しさん
2014/11/06(木) 22:56:57.44ID:Lo7NS+Dzここらへんは5.4とかからかなあ。
そうするとC++でコンパイルしつつ外付けで
boost_regex.matchというような関数を用意しろって感じかなあ。
↓これだもんね。
static int singlematch (MatchState *ms, const char *s, const char *p,
const char *ep) {
if (s >= ms->src_end)
return 0;
else {
int c = uchar(*s);
switch (*p) {
case '.': return 1; /* matches any char */
case L_ESC: return match_class(c, uchar(*(p+1)));
case '[': return matchbracketclass(c, p, ep-1);
default: return (uchar(*p) == c);
}
}
}
0591デフォルトの名無しさん
2014/11/07(金) 07:19:30.78ID:m1y+JxyjUTF-8だからこそsinglematchでもなんとか実用になるんじゃないかな?
utf8.charpattern も一応は用意はされているし。
もちろん、string.reverseとか使えないのもあるけど。
0592デフォルトの名無しさん
2014/11/07(金) 08:11:23.32ID:TOsxLUmk日本人は余計なことばかりしやがるよな、とかいわれてんだろうな
0593デフォルトの名無しさん
2014/11/07(金) 12:46:24.98ID:s2pGHogx0594デフォルトの名無しさん
2014/11/08(土) 17:07:11.07ID:OPiyaoeS0595デフォルトの名無しさん
2014/11/12(水) 00:46:15.46ID:0RjVbG4l他に画像を探す方法はないでしょうか?
0596デフォルトの名無しさん
2014/12/10(水) 00:35:14.86ID:If47AJ4g0597デフォルトの名無しさん
2014/12/10(水) 09:29:30.82ID:5IiOJn2a開発チームのルールの面で使わせないケースはありそうだ
0598デフォルトの名無しさん
2014/12/11(木) 12:44:17.85ID:vUqbLqkUboostが使えない環境じゃなくて、色々な都合でboost使っちゃダメな環境があるわけか…
0599デフォルトの名無しさん
2014/12/15(月) 08:18:50.09ID:njR4rCHR0600デフォルトの名無しさん
2014/12/19(金) 02:51:01.25ID:ouKpIS27c#のnamespaceやstaticなクラスをバインドするにはどうすればいいのでしょうか?
関数であれば以下のように登録できたのですが、
lua.Globals["Log"] = (Action<string>)UnityEngine.Debug.Log;
UnityEngineのようなnamespaceを渡し、
script内で UnityEngine.GameObject.Find("obj")
みたいに使いたいのですが
0601デフォルトの名無しさん
2014/12/22(月) 00:19:17.53ID:ZmRaQmm9ざっと眺めてみたけど
その程度の事は同じように出来る
ただ
foo()
foo(int)
foo(string)
などのオーバーロードはどうするのかが疑問
動的に型チェックして振り分けてとかだと正直使い物にならないと思う
0602デフォルトの名無しさん
2014/12/22(月) 01:19:08.37ID:D1rmXNgC使いながらマニュアル読んで使い方が分かってきました。
オーバーロードに対応してないクラスは扱うことができませんでした。
いくつか制約があるようです。
C#のオブジェクトを簡単にluaから使えるのかと思ったら、
そう簡単にはいかないのですかね。
そういうのはラッパークラスを用意して、
MoonSharpを意識した設計しないといけないようです。
つい新しいものに手を出したけど、他のC#系のluaはどんな感じなのかしら
0603デフォルトの名無しさん
2014/12/22(月) 01:19:52.78ID:D1rmXNgCオーバーロードに対応してませんでした。
0604デフォルトの名無しさん
2014/12/26(金) 08:14:14.37ID:aFXoC3vZ0605デフォルトの名無しさん
2015/01/03(土) 21:35:53.41ID:x6OMspk00606デフォルトの名無しさん
2015/01/03(土) 22:19:20.82ID:FqikSySO0607デフォルトの名無しさん
2015/01/03(土) 23:14:01.09ID:KF2R3l6fというかあったら困る
0608デフォルトの名無しさん
2015/01/04(日) 02:23:10.16ID:AdLaa9R20609デフォルトの名無しさん
2015/01/04(日) 06:44:30.95ID:FkvmMkr7新C-APIの lua_rotate() が地味に便利。
0610デフォルトの名無しさん
2015/01/04(日) 08:29:47.65ID:LjhOLja4>>559
0611デフォルトの名無しさん
2015/01/08(木) 07:02:44.50ID:HB0/eqgI0612デフォルトの名無しさん
2015/01/13(火) 08:21:09.63ID:rG5Z7jyu0613デフォルトの名無しさん
2015/01/14(水) 08:19:11.90ID:G/8s1bPT0614デフォルトの名無しさん
2015/01/19(月) 13:17:04.98ID:i0MAuzuq組み込みも js で十分な気がしてきた。
0615デフォルトの名無しさん
2015/01/19(月) 19:23:58.96ID:ax3bxEw/0616デフォルトの名無しさん
2015/01/19(月) 20:11:10.33ID:i0MAuzuq>>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:MIZOkYTq0619デフォルトの名無しさん
2015/01/20(火) 07:11:39.79ID:Qwim/1/Yの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+JOLuaは知らないけど
V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている
だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない
関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
0622デフォルトの名無しさん
2015/01/20(火) 18:56:01.81ID:MIZOkYTq0623デフォルトの名無しさん
2015/01/20(火) 19:33:29.39ID:Qwim/1/Y自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、
気になるならラッパーを一枚噛ませば十分だしな。
0624デフォルトの名無しさん
2015/01/22(木) 18:40:30.34ID:dZXZ9W3g0625デフォルトの名無しさん
2015/01/22(木) 19:34:31.74ID:QfKlzsaMIDispatchをVARIANT経由でJavaScript側に公開できることがわかった。
COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。
なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。
無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。
悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
0626デフォルトの名無しさん
2015/01/26(月) 19:41:40.28ID:+446CocfSquirrel 3.1 RC1
Released January 10, 2015
さっき気付いた。
0627デフォルトの名無しさん
2015/01/26(月) 20:46:44.47ID:5nfZyfP40628デフォルトの名無しさん
2015/01/26(月) 21:34:59.26ID:Sajs+zmm0629デフォルトの名無しさん
2015/01/28(水) 05:31:27.96ID:SR5teQWH0630デフォルトの名無しさん
2015/01/28(水) 23:18:45.09ID:arg2MK+/0631デフォルトの名無しさん
2015/01/29(木) 08:12:30.79ID:FQssNh0T0632デフォルトの名無しさん
2015/01/29(木) 08:16:42.32ID:vMBFyrLx0633デフォルトの名無しさん
2015/01/29(木) 08:43:48.85ID:FQssNh0T0634デフォルトの名無しさん
2015/02/01(日) 00:18:48.30ID:ARaZzTfJlua部分はともかく独自追加した所のデバッグやってるんだろうか
findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
0635デフォルトの名無しさん
2015/02/03(火) 08:45:44.97ID:AqPQb7sPObjectScript
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:Eqb0TJqD0637デフォルトの名無しさん
2015/02/07(土) 10:47:45.90ID:3mcYxCt20638デフォルトの名無しさん
2015/02/07(土) 11:10:55.67ID:kuZAKFeALuaの話? いちおう組み込み系全般のスレなので……
標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない?
まぁ、自作しても 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:8cE0HyuH0640デフォルトの名無しさん
2015/02/08(日) 12:28:55.31ID:5UGjVIn50641デフォルトの名無しさん
2015/02/08(日) 17:36:40.20ID:zqGmBD5H0642デフォルトの名無しさん
2015/02/16(月) 22:29:33.28ID:JBQ+Owrp0643デフォルトの名無しさん
2015/02/16(月) 22:40:47.19ID:yzFhOePDLuaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
0644デフォルトの名無しさん
2015/02/16(月) 23:48:51.20ID:JBQ+Owrp0645デフォルトの名無しさん
2015/02/19(木) 19:51:04.59ID:Qw0v9eHu自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、
Luaってもう仕様安定してるの?
浮動小数点の実装はちゃんとバイナリ?
0646デフォルトの名無しさん
2015/02/19(木) 20:22:48.55ID:YKDWyqEz本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。
Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。
内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。
正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。
自分は C++ regex を使う別実装を自前で追加してる。
0647デフォルトの名無しさん
2015/02/21(土) 12:07:52.58ID:ftMcKIolありがとう。
awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。
ちょっと活用を検討してみます。
0648デフォルトの名無しさん
2015/02/23(月) 19:05:53.37ID:PUEtXCiMメモリ管理の改良とか、キャスト用メソッドの登録方法が変わったとか色々変更あるっぽい。
0649デフォルトの名無しさん
2015/02/23(月) 23:12:44.33ID:2B41jSVI┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0650sage
2015/03/17(火) 22:57:10.71ID:yVREPXol0651デフォルトの名無しさん
2015/03/17(火) 23:14:59.23ID:Wb8shGuwAS3は組み込めないだろ・・・
0652650
2015/03/17(火) 23:25:25.06ID:yVREPXolluaでio.writeでSDカードに書き込めるかと思いきやなんか挙動が怪しい・・
0653デフォルトの名無しさん
2015/04/11(土) 22:52:38.83ID:L0A+zZu9tbl[]
tbl[ "a" ] = data1
tbl[ "b" ] = data2
tbl[ "c" ] = data3
#tblやtable.maxn(tbl)をやっても「0」が帰ってきてしまいます。
ハッシュの場合、格納されている要素数を返すものはないのですかね
ざっと検索して調べた感じそれっぽいのはありませんでした
0654デフォルトの名無しさん
2015/04/11(土) 22:59:40.53ID:L0A+zZu9テーブル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それが一番速いと思います
luaのテーブルは厳密な要素数を追跡してないのよ
値をスカスカに配置して列挙時に存在チェックする
0657デフォルトの名無しさん
2015/04/12(日) 02:22:26.48ID:ubi9S/woありがとうございます
luaの仕様的に他に良い方法はないのですね
0658デフォルトの名無しさん
2015/04/25(土) 21:53:05.10ID:udlJJGWW組み込み系言語ってファームウェア用かと思ったwww
0659デフォルトの名無しさん
2015/04/27(月) 08:43:41.87ID:9sNRGOg0ソフトにLuaを組み込んでユーザーにLuaスクリプトを作ってもらおうと思っています。
そのLuaスクリプトを他のユーザーにばらまかれるとセキュリティ上危なくなるので困っています。
Luaで書けるファイルIOやネット上のダウンロードなど、危なそうな機能だけ無効化したいのですが可能でしょうか?
分かる方、よろしくお願いします。
0660デフォルトの名無しさん
2015/04/27(月) 09:18:48.10ID:18wKNGsP・不必要な標準モジュールは組み込まない。
・モジュールの中に不必要な関数がある場合は同名の関数を作ってオーバーライドしてしまう。
0661デフォルトの名無しさん
2015/04/27(月) 09:20:47.53ID:18wKNGsP0662デフォルトの名無しさん
2015/04/27(月) 11:51:04.49ID:RhUk/Sb2requireのうち、c系dll読み込みも外す。
0663デフォルトの名無しさん
2015/04/27(月) 14:01:37.37ID:9sNRGOg0>>662
塞ぎ忘れたらとんでもない事になりそうですね。。。
がんばってみます。
ありがとうございました。
0664デフォルトの名無しさん
2015/04/27(月) 18:39:19.42ID:RhUk/Sb2作られてるので、めちゃくちゃ簡単に追加や削除ができるよ。
やり始めたらあまりに簡単でびっくりするとおもう。
最悪上記の消したいlua関数のregisterの処理だけl***lib.c系からコメントアウトした上で、
luaインタプリタを本体アプリにスタティックリンクするだけで、それなりに仕組みを深く理解している人以外はイタズラしにくくなる。
0665デフォルトの名無しさん
2015/04/27(月) 20:13:20.63ID:ByjLANN5io = nil
...
とかを用意して
ユーザースクリプトを読む前にdofile
中身が決まったらdostringでハードコードする
ってのが簡単
0666デフォルトの名無しさん
2015/04/27(月) 23:36:05.71ID:V1hm5/yhUbuntuとかはまだ5.1だったりするのかな
0667デフォルトの名無しさん
2015/05/03(日) 17:51:04.86ID:R+xSVf6mわざわざそんなことするより、読み込み部コメントアウトした方が
簡単だろw
モジュール単位、関数単位で、1行ずつ「追加・削除はご自由に」って
感じで全部列挙されてんだから。
0668デフォルトの名無しさん
2015/05/03(日) 18:10:07.04ID:IVZoCitV何でわざわざ改造せねばならんの?
0669デフォルトの名無しさん
2015/05/03(日) 18:16:54.02ID:hj7OiJXSLua処理系を勝手に改造できる(してもいい)環境でないとそもそもできないね
0670デフォルトの名無しさん
2015/05/04(月) 07:02:11.02ID:Sl6NKplnexit とかが数箇所入ってる時点で
組み込みで等でコンパイル済ライブラリを
そのまま使うのは怖すぎると思う。
0671デフォルトの名無しさん
2015/05/04(月) 07:28:47.12ID:ZL3JUBSprequireもマルチバイト文字を含むパスを扱えないし (win環境)
本体と比べてライブラリの品質は良くない
0672デフォルトの名無しさん
2015/05/04(月) 07:51:01.81ID:sbqo/+Tp0673デフォルトの名無しさん
2015/05/04(月) 08:38:47.22ID:Sl6NKplnだから、
ソースとか全部自由になるのなら、ベストはC層で
・不要なライブラリのロードを消す。
・package.cpath を消す。 or requre 自体不要なら消す。
・ソースから本体アプリにLuaごろスタティックリンク
これがデフォルトよりサイズも小さくスピードもアップする上に、
いたずらの可能性も限りなく0
LuaでnilにしたのをCへdostringで=といったのは、
一部を手抜きで代替するという案であって
決してベストなものではない。
スピードが遅くなったり実行ファイルにゴミは残るが、
そういう手の抜き方もあるよ、という話。
0674デフォルトの名無しさん
2015/05/04(月) 22:44:21.04ID:qi4175C9iosのアプリ固有ID?
//var/mobile/Containers/Data/Application/********/Documents
の********の部分の取得方法がわからなくて困ってます。
プログラミング自体初心者で一月ほど調べてるけどよくわからない言葉だらけで・・・
何かアドバイスくださいm(__)m
0675デフォルトの名無しさん
2015/05/04(月) 23:07:02.98ID:8Z+6LqT80676デフォルトの名無しさん
2015/05/04(月) 23:17:09.78ID:qi4175C9すみません・・・
最後に是非教えてください
0677デフォルトの名無しさん
2015/05/05(火) 12:42:12.67ID:KszErmBEこれでわかんなかったら本当にやめろ
0678674
2015/05/06(水) 08:00:28.72ID:uYsfVS/Mマクロ自体は完成しているんですが、アップデートとかのたびに変わるみたいで
手作業で書き直してるんでそれをどうにかできればなと......
0679デフォルトの名無しさん
2015/05/06(水) 11:08:53.11ID:/KG0Gdz0luaに依存する処理なのか?
なんとなくスレ違いの部分で悩んでいる感がある
文字列やファイルの処理ではないんだろ?
0680デフォルトの名無しさん
2015/05/06(水) 11:18:37.36ID:iq3C3Ifphttp://qiita.com/fuhi1983/items/342b82f3222483697e8e
これじゃねーの?
0681デフォルトの名無しさん
2015/05/06(水) 14:09:18.09ID:Om2we3tLそのフォルダ名はアプリの構成かわるときにランダムに決定されるので、そのアプリ自身以外からは基本的には特定できない仕組みになってる
Data/Application/*** の下に、なにかしらアプリを特定できるような情報が入ったファイル(たぶんInfo.plistとか)があるだろうから、それを全部探索して読み込んで目的のアプリを探す、以外の方法は無い
0682デフォルトの名無しさん
2015/05/06(水) 15:34:43.00ID:uYsfVS/Mそうなんですね、ありがとうございます。
どこかに情報ないかといろんなファイルをtextで開いてたのですが見つからないはずですね
ありがとうございました。
0683デフォルトの名無しさん
2015/05/16(土) 00:11:08.39ID:yj1J+1psplayer = {}
function player:Attack()
end
function player:Jump()
end
上記のような定義があり、
"Attack"と"Jump"のキーとその関数をペアで取得したいのですが
0684デフォルトの名無しさん
2015/05/16(土) 00:33:56.90ID:nBVK7qH/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下記のようなテキストの入った複数の配列があり、
tbl01={"a","b","c"}
tbl02={"d","e","f"}
tbl03...
ストリング型のstrという変数に"tbl"という文字列が入っています。
やりたいことは、文字列型の値を何とか加工してtblの要素にアクセスしたいんです。
str[1]
とするとエラーが出ますし・・・(まあそうですよね)
強引にtable型に型変換できないかな?とか悩んでいます。
文字列しか受け取れない場合、複数ある配列にアクセスするには
どのようにすればよろしいでしょうか?
詳しい方教えてください。お願いします!
0688687
2015/05/19(火) 14:37:23.12ID:dht99EFestrの中に入っている文字列は"tbl"ではなく"tbl01"としています。
いずれにせよ無理ですが…
0689デフォルトの名無しさん
2015/05/19(火) 16:19:59.83ID:Nw+B6083string.sub() or .byte()
1文字ずつ処理するのはC系に比べて苦手。
代わりに正規表現が使えないか要検討。
0690デフォルトの名無しさん
2015/05/19(火) 16:23:48.21ID:26zc2bnIlocal 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違うな。質問の意図を取り違えていたかも?
str[1]の代わりになるのは >>689 だが、
元々の目的が「変数に入っている変数名を経由したアクセスがしたい」ならば _G を使う:
str = "tbl01"
assert(_G[str] == tbl01)
tbl01 等がグローバル変数、ローカル変数、他テーブルの要素で処理が違うものになるから、これでダメならまた聞いてくれ。
0692デフォルトの名無しさん
2015/05/19(火) 22:19:05.65ID:dht99EFe>>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:UWcSl4nDtable型だよって指示できないもなにも、変数strの中身はあくまでstringなんだから、Javaで同じことやる場合でもHashTableかなんか使うよね?
つまり、>>691 がやりたいことなんじゃないの?
table.maxn(_G[str]) でできると思うよ
0694デフォルトの名無しさん
2015/05/19(火) 23:29:17.09ID:dht99EFeやりました!!!
要素にアクセスできましたーー!
そのまま文字列一致の判定をして、フラグ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:WFHyWYJ80698695
2015/05/28(木) 19:45:28.97ID:52beXCpyLuaJIT-2.0.2を利用しているのですが、OSX用のuniversal binaryで出力する方法が分かりません。
Luaの速さに全体重を乗っけてるんで、今更別の言語への切り替え等は考えられません。
分かる方、ぜひ教えてください。
0699デフォルトの名無しさん
2015/05/29(金) 01:55:02.89ID:p/ahFCvThttps://www.google.co.jp/search?q=lipo+universal+binary
0700デフォルトの名無しさん
2015/05/29(金) 02:07:51.90ID:p/ahFCvTbrew 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/ahFCvThttps://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ありがとうございます!
LuaJITの32bit版ライブラリと64bit版ライブラリを出力して、lipoというソフトで合体という事ですよね?
試行錯誤してみます!
0703695
2015/05/29(金) 15:29:21.86ID:2a3TZL/2まさにコレでした。
問題は2つあったんですね。
もうお手上げです。
とりあえず勉強になりました。
ありがとうございました。
0705デフォルトの名無しさん
2015/09/14(月) 16:28:17.35ID:SxkHJw7Dhttp://pastebin.com/nBuJChc9を動作させたいです
0706デフォルトの名無しさん
2015/09/30(水) 15:13:43.25ID:gLrxUsPlHaxeのプログラムを動かすVMとだけ思ってた
https://en.wikipedia.org/wiki/Neko_(programming_language)
0707デフォルトの名無しさん
2015/09/30(水) 15:57:26.40ID:2TkwnPLUhttp://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:Kl04gCQohttps://github.com/dibyendumajumdar/ravi
lua5.3互換、静的型付け追加、jit
0710デフォルトの名無しさん
2015/10/21(水) 01:29:46.09ID:+L1p2dWm0711デフォルトの名無しさん
2015/11/02(月) 08:39:42.03ID:LHJrrN+c0712デフォルトの名無しさん
2015/12/07(月) 06:26:50.82ID:sv1H4v2t使ってる人いる?
0713デフォルトの名無しさん
2015/12/08(火) 17:05:55.06ID:yVFhtqC/命令としてはタップ、待機、タップの繰り返しなんだけども10回目くらいで目に見えて遅れてる
usleep自体正確じゃなく、1回ズレると以後ズレた地点から待機時間が計算されるからその繰り返しになっていると思う
os.clockで開始時間計って目的のタップまでの待機時間を計算していくしかないかなと思ってるんだけどいかんせん700回以上を計算して行くのは心が折れるので何か方法があれば教えて下さい
0714デフォルトの名無しさん
2015/12/08(火) 17:52:14.14ID:V92FzyIAluaに限った話じゃないが
次に目を覚ましたい時刻までの差分だけ寝れば?
0715デフォルトの名無しさん
2015/12/08(火) 18:05:12.63ID:yVFhtqC/os.clockでタップさせたいタイミング全ての時間を取得するって事ですか?
0716デフォルトの名無しさん
2015/12/08(火) 18:45:35.86ID:V92FzyIA「全ての時間」ってのがよくわからないな。キリのいい間隔ではだめなのか?
例えば 200ms おきにタップしたいなら、
ベース時刻から 0, 200, 400, 600ms …の経過で処理するんでしょ?
で、200ms の処理の際に時計を見て、実際には 205ms の時刻なら、次は 400 - 205 = 195ms だけ寝る。
何かしら負荷がかかって 400ms の時刻に近すぎたり過ぎたりしたら
スキップするなり、数回間隔を狭めて調整する処理も要るかも。
0717デフォルトの名無しさん
2015/12/08(火) 23:00:53.20ID:yVFhtqC/一定間隔ではないんですよね
止める時間はだいたい4パターンのうちどれか
タップした時の時間と目的の時間を比較する方法があれば良いんですが
一定間隔ズレているなら良いですが徐々に少しずつ遅れているなら結局700回を全て調整していくしかないわけですよね…
コツコツ頑張ります
0718デフォルトの名無しさん
2015/12/09(水) 01:20:52.01ID:uEc6NdFXデュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーロー、シャーマン・キングなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。
さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1449039272/-18
0719デフォルトの名無しさん
2015/12/30(水) 01:11:18.19ID:TU1EcnmSインストール出来ません
アドバイスを御願いします(´・ω・`)
0720デフォルトの名無しさん
2015/12/30(水) 01:46:15.47ID:LbvdgCkvhttp://luabinaries.sourceforge.net/
0721デフォルトの名無しさん
2015/12/30(水) 05:57:27.20ID:47mVpj3Elocal start_usec = sysyem_usec();
〜色々やる〜
usleep(sleep_time - (sysyem_usec() - start_usec));
これだけの話じゃないの?
ちなみにos.clockはprogramが使用したCPU時間だからCPUが寝てる間は増えないよ
0722デフォルトの名無しさん
2015/12/30(水) 18:30:13.07ID:Sj5i/aUtOSがワカランけど
ソースをコンパイルするなら
tar zxvf lua-5.3.2_Sources.tar.gz
cd lua53
make linux or
make macosx or
make mingw or
make posix or
make solaris or
make install
0723デフォルトの名無しさん
2016/01/07(木) 20:02:10.72ID:lAIllFG+Javaの呼び出しAPI使う方がずっと簡単じゃん
Javaなら書くのにEclipseとか使えるし
0724デフォルトの名無しさん
2016/01/07(木) 21:06:07.28ID:YzB9fcaP0725デフォルトの名無しさん
2016/01/08(金) 08:07:50.80ID:QEjOaegz0726デフォルトの名無しさん
2016/01/11(月) 03:28:28.16ID:Va0MVjV00727デフォルトの名無しさん
2016/01/11(月) 04:05:21.99ID:Va0MVjV0http://lua-users.org/wiki/BindingCodeToLua
それ使うとJNIが面倒と思えるぐらい便利なのあるよ
0728デフォルトの名無しさん
2016/01/11(月) 04:14:11.05ID:0EvHa66G実行時コンパイルできるやつ
0729デフォルトの名無しさん
2016/01/11(月) 04:27:46.70ID:Va0MVjV0それってエラーになるの結局実行時だしIDEがサポートしないとメリットなくない?
0730デフォルトの名無しさん
2016/01/11(月) 05:37:06.41ID:0EvHa66Gそうじゃなくて、実行時コンパイル「も」できるやつと言いたかった。つまり実質Evalを捨ててない静的型付き言語。
というかIDEサポートなくたってメリットあるだろ・・・コンパイル時に型エラー出るじゃん
0731デフォルトの名無しさん
2016/01/11(月) 07:27:44.99ID:H4zd5jav0732デフォルトの名無しさん
2016/01/11(月) 07:39:28.66ID:H4zd5jav0733デフォルトの名無しさん
2016/01/11(月) 09:54:45.69ID:EOECSf3MJavaScriptを組み込んでTypeScriptで書く
IDEサポートも VisualStudio なり VisualStudio Code なりがある
v8なりJsRTが使える環境なら性能面でもかなり良い選択だと思う
0734デフォルトの名無しさん
2016/01/11(月) 17:05:44.51ID:if9kJcKPv8をアプリに組み込むのは手間だし(クロスプラットフォームを考えると尚更)
altJs系の言語はeval出来るって要件満たしてない
0735デフォルトの名無しさん
2016/01/12(火) 15:56:16.83ID:pvMT9PCjcommonjsのnode組み合わせたり必要なんだよね?
v8意外にもあるみたいだけど。
http://mattn.kaoriya.net/software/lang/c/20150815003033.htm
0736デフォルトの名無しさん
2016/01/12(火) 15:58:08.09ID:pvMT9PCj0737デフォルトの名無しさん
2016/01/15(金) 01:33:01.12ID:9hWfybeUAngelScript|Д`)ノ<静的型付き言語と聞いて。Anyもあるよ!
0738デフォルトの名無しさん
2016/01/19(火) 20:51:03.31ID:0e0GcKQy俺はスクリプト言語に静的型はそれ程魅力無いと思ってるし実績あるからLuaでいいやってなってるけど
0739デフォルトの名無しさん
2016/01/24(日) 13:23:45.64ID:xtpCszE9Lua の文法って簡単なんだなーと思って試しにパーサを書いてみてたんだけど、
マニュアルの BNF 通りだと左再帰になってるから無限ループに陥ってしまった。
間接的な左再帰だから俺のへぼい知識では除去できなかった。
実際に Lua の実装では再帰下降してるっぽいからなんとかしてるんだとは思うけど、
左再帰を除去した文法規則の表とかってどっかにないかな?
ソースコード読むしかない?
0740デフォルトの名無しさん
2016/01/31(日) 02:54:56.98ID:kn/5LVuqそんなもん要らん!標準のstack APIで充分だ!って人もどれくらい居るんかな
0741デフォルトの名無しさん
2016/01/31(日) 11:34:52.69ID:Pw2nI7hG0742デフォルトの名無しさん
2016/01/31(日) 23:47:27.75ID:kn/5LVuqC++のオブジェクトをLuaから使えるようにするだけでもやりたくなくなる
0743デフォルトの名無しさん
2016/02/02(火) 07:57:29.11ID:lmUWOHWt0744デフォルトの名無しさん
2016/02/03(水) 23:36:18.56ID:8yWl5BHB21世紀にもなってなんでや。
0745デフォルトの名無しさん
2016/02/04(木) 00:44:14.34ID:lRklN/w3utf8ならそれなりに使える
21世紀にもなってSJISは使ってないんだろ?
とはいえファイル名はOSネイティブの文字コードが要るとか
幾つか注意点や手を入れたくなる所はあるが
0746デフォルトの名無しさん
2016/02/04(木) 01:00:10.15ID:Jx1/Vtha使えるけど?
0747デフォルトの名無しさん
2016/02/04(木) 23:42:25.61ID:wmCOjGkSWinだと何しても所詮SJISから逃れることはできん。
むしろSJISに対応してないプログラムの方が大問題だ。
0748デフォルトの名無しさん
2016/02/04(木) 23:52:14.71ID:wmCOjGkS今の言語だと、ソースをマルチバイトで記述しようが、utf8で記述しようが、
マルチバイト書いたソースから、utf8で書いたクラス呼ぼうが、
変換などソースのどこを探しても1行たりとも表れないのが常識なんだけれども
Luaは変換だらけ。
0749デフォルトの名無しさん
2016/02/05(金) 00:44:16.88ID:FMLvAXOG0750デフォルトの名無しさん
2016/02/05(金) 01:33:38.19ID:XGMa0UOYtypedef struct {
int a;
int b[4];
}hoge_t;
int hogehoge(hoge_t * test);
と書いて swig -lua sample.i 実行で吐き出されるグルー関数を使う場合
luaの記述は
test = require "xxx"
test_t = hoge_t()
test. a =10
result = hogehoge(test_t )
とかすればよいのですが、
test.b[1]=3とか
test.b[2]=4とかするとグルー関数でパラメータチェックで弾かれます。
構造体のポインタ渡しで構造体の中に配列がある場合は
LUA側でどんな記述をすればいいのだろう?
0751デフォルトの名無しさん
2016/02/05(金) 01:35:33.28ID:XGMa0UOYtest_t = hoge_t()
test_t. a =10
result = hogehoge(test_t )
とかすればよいのですが、
test_t.b[1]=3とか
test_t.b[2]=4とかするとグルー関数でパラメータチェックで弾かれます。
構造体のポインタ渡しで構造体の中に配列がある場合は
LUA側でどんな記述をすればいいのだろう?
0752デフォルトの名無しさん
2016/02/05(金) 06:22:46.35ID:pWou2QhoANSI 版の API を使ってるやつこそクソ。
正直言って A 付きの Windows API は全部廃止してもいいくらいだ。
UNICODE 版の API 使えよ。
0753デフォルトの名無しさん
2016/02/05(金) 08:17:19.47ID:ToPlCIrzLuaの話ならstringはchar固定でwchar_t等に変更するのは本体の改造が要る。
Luaのstringは、byte-arrayという名前のほうが適切だと言える。
不適切な変換はしないが、「UTF8として解釈するならutfモジュールを使え」というスタンス。
同様に、SJISに対応したいなら自分でsjisモジュールを作ることになる。
Windowsがsetlocale("UTF8")をサポートしていないのが面倒の原因なんだよな。
他のOSならできるから、もうみんなUTF8に統一して満足しちゃってる。
0754デフォルトの名無しさん
2016/02/05(金) 15:39:47.51ID:brMGa4PB他のプラットフォームは軒並みUTF-8になってしまって孤立してしまったが互換性のためにSJISを捨てられないWindowsさん
MSVCで設定とかでUTF-8版のCライブラリ(中でUTF-16に変換するような)を使えるようにしてくれたらいいような気もするんだけど何か問題あるんだろうか
0755デフォルトの名無しさん
2016/02/05(金) 16:03:19.95ID:TvHQKkN90756デフォルトの名無しさん
2016/02/05(金) 19:16:06.06ID:brMGa4PBRubyのWindowsでの日本語対応がマトモだったと思ってる?
0757デフォルトの名無しさん
2016/02/05(金) 19:54:12.16ID:Jcxd0Fsw0758デフォルトの名無しさん
2016/02/05(金) 20:10:36.21ID:pWou2QhoUTF-8 を基本にしてしまうと ASCII コードの範囲内で使う分には対応してようがいまいが使えちゃうから、
対応してない部分が顕在化し難いまま混在してわけわからんようになるのが見えてる。
その点、 UTF-16 と ASCII (ANSI) が混ざったらすぐ発覚する。
0759デフォルトの名無しさん
2016/02/05(金) 20:32:40.84ID:brMGa4PBへぇ
Windows以外はわけわからんようになってるという主張でございますか?
0760デフォルトの名無しさん
2016/02/05(金) 21:00:24.37ID:I7CO4PTNいうような利点はないってことでしょ。
utf8にしても、実際の運営としてはASCIIのような運営範囲なんでしょ?w
0761デフォルトの名無しさん
2016/02/05(金) 21:04:55.16ID:ToPlCIrzchar (1 byte) にしか対応していないコードや製品が氾濫するのは困るが
wchar_t (2 byte) にしか対応していないものなら許容できるってニュアンスか?
それもサロゲートペアができて破綻したけどな。
絵文字のせいで目にする機会も無いではないし。
0762デフォルトの名無しさん
2016/02/05(金) 21:28:04.79ID:brMGa4PB何言ってるのかよくわからんけど
>>UTF8にしても世界の文字の一部しか対応できないので
表現できる範囲はUTF-16も同じなんだが、それもダメって言ってるんだよね?
ってことはつまりSJISとかそれぞれのエンコーディングで適切な処理を行えってこと?
俺はUTF-8のコードポイントの区切りかたは知ってるけど、
他の言語の専用エンコーディングどころか
SJISのコードポイントの区切り方すら知らないわ、
それをプログラミング言語作る人にしかも日本語とかまったく使わない海外の作者に強いるとかできないっすわ。
0763デフォルトの名無しさん
2016/02/05(金) 21:36:38.36ID:TvHQKkN90764デフォルトの名無しさん
2016/02/05(金) 21:53:39.03ID:brMGa4PB0765デフォルトの名無しさん
2016/02/05(金) 23:17:47.52ID:AF25xcuE表現するという無謀な目標を掲げた10646と合流してごみ溜めのようになった。
そんなのに付き合って苦労するのはバカらしいから、基本多言語面だけサポートしてサロゲートペアは
トーフ扱いするのが現実的。どうせろくにフォントも無いし。
0766デフォルトの名無しさん
2016/02/05(金) 23:26:52.29ID:pWou2Qhoコードページの概念を捨てられないという主張。 そりゃ全部 UTF-8 に出来ればベストだとは思うよ。
でも捨てられない以上、下手に混ざってわけわからんようになるよりは混ざったらすぐわかる方がマシって話。
0767デフォルトの名無しさん
2016/02/05(金) 23:56:37.35ID:wLhOEYBg日本語もまともに表示できないわけで。
逆にプログラミング言語ごときが数十億人が使ってる現実的な各文字コードを押しのけて
utf8に全文書統一しろ、今すぐしろとか言っても、相手にされんよ。
0768デフォルトの名無しさん
2016/02/06(土) 00:27:48.85ID:/BZKOehd数十億人とか盛りすぎ
0769デフォルトの名無しさん
2016/02/06(土) 00:47:56.49ID:/BZKOehd>>765
最近の携帯電話使ったことないのかい?
>>767
Windows内部はUnicodeで扱ってるからコンソールもUnicodeで表現できない文字は表示できませんよ
WindowsのコンソールをCP65001にしてもまともに表示できないのは実装がタコなだけ
あとメジャーな携帯電話のOSはどちらもUnicodeですけどこれは本当に数十億人が使ってますよ
0770デフォルトの名無しさん
2016/02/06(土) 02:13:32.99ID:bnndf23C実装がカスとかいったところで、モノ生産してるデスクトップ85%から占めてるてるものを
否定して見ない振りしてもしょうがない。
逆にビューワー(携帯)なんか資産性がないからどうでもいいよ。
0771デフォルトの名無しさん
2016/02/06(土) 03:04:06.56ID:/BZKOehdWindowsがUTF-8をまともにサポートすべきかっての論点だと思ってたけど。だからいまの実装を見ないふりもなにもないよ。
MicrosoftがWindowsでUTF-8をちゃんとサポートししようとしても今と変わらずクソ実装になるって主張じゃないよね?
>逆にビューワー(携帯)なんか資産性がないからどうでもいいよ。
プログラムを動かすのは大多数が持ってるビューワーなわけで、それこそ否定して見ないふりしてどうすんのよ。
今はサーバーはLinuxで携帯はiOS or Androidなわけで、プログラムを実行する環境全体を見るとWindowsなんて少数派だよ。
0772デフォルトの名無しさん
2016/02/06(土) 08:26:37.09ID:X7qr0C1S今主流の言語 (Java, C#, Swift/Obj-C, JavaScript) のレベルでは
ほぼ UTF-16 に統一された印象があるんだが、この認識は間違っているだろうか?
ファイル入出力では文字コード変換をするのは前提として。
OSうんぬんより、むしろ文字列型がUTF-16でない言語が問題な気がする。
0773デフォルトの名無しさん
2016/02/06(土) 12:03:30.10ID:BlYk2woR0774デフォルトの名無しさん
2016/02/06(土) 14:43:17.15ID:8fDg9LDUその辺の言語はUTF-8が産まれる前からある言語だからな
SwiftはUTF-16じゃないし(もちろん扱えるけど)、goは基本UTF-8
0775デフォルトの名無しさん
2016/02/06(土) 15:15:51.79ID:su9E+X74python 内部表現はデフォルトucs4(WindowsだけUTF-16)
php よく知らんけどググってみる限り統一されてなさそう
というわけでUTF-16に統一されてるわけじゃないよ。
0776デフォルトの名無しさん
2016/02/06(土) 15:22:16.66ID:22sNDRQRwchar_t をいまさら統一とは言わないけど、なんか統一した別枠の仕様を標準化してほしい
0777デフォルトの名無しさん
2016/02/06(土) 15:44:17.53ID:22sNDRQRchar16 _t がutf-16、char32_tがutf-32で固定の組み込み型。u"" U"" でそれぞれリテラル指定も可能
ただし全部これに対応したライブラリーは整備されてないので、
実情はあんまかわらん模様
0778デフォルトの名無しさん
2016/02/06(土) 15:52:48.40ID:22sNDRQROS依存処理は分離した上で、winはwchar_t がutf-16だからそのままワイド系の関数やapi使って、
unix系はwchar_tは信頼できないから、c16rtomb かc32rtomb でmbに変換して対応、が、C11以降の正しい書き方ってことかな
0779デフォルトの名無しさん
2016/02/06(土) 22:02:21.26ID:iW4Rvogm0780デフォルトの名無しさん
2016/02/06(土) 22:11:19.39ID:+jWWiLZa0781デフォルトの名無しさん
2016/02/07(日) 00:18:29.86ID:LSSjhAu+だからUTF-8に統一すりゃいいのにって話に戻るわけだ
0782デフォルトの名無しさん
2016/02/07(日) 00:48:50.94ID:4QXOAnIu0783デフォルトの名無しさん
2016/02/07(日) 03:59:45.36ID:LSSjhAu+それに誰もそんな話してないよね?
0784デフォルトの名無しさん
2016/02/07(日) 20:56:40.56ID:8pvMtac5以前(5.1/5.2)はsjisパッチがあったりしたので、そっちの話も出てたのかとおもった。
0785デフォルトの名無しさん
2016/02/07(日) 23:13:24.81ID:vQROT1hb今でもマルチバイトのソースコードは山盛りだよ。
最も使用頻度が多いVSがデフォルトSJISだぞ。
そんな現実すら知らずにプログラマやってて
本気で言ってるな、周りが全く見えてない能無し。
0786デフォルトの名無しさん
2016/02/07(日) 23:15:09.52ID:jiomZ/W60787デフォルトの名無しさん
2016/02/07(日) 23:22:01.52ID:vQROT1hb0788デフォルトの名無しさん
2016/02/07(日) 23:44:00.61ID:LSSjhAu+それはWindowsでしか動かないプログラムを書くお前の環境特有の話
それに気が付いてないなら
>周りが全く見えてない能無し。
自己紹介おつ
>>787
組み込み言語なら現実的な選択でしょ
多種多様なエンコーディングに対応するためにOSとか巨大な外部ライブラリに依存するほうが糞
0789デフォルトの名無しさん
2016/02/08(月) 00:07:53.29ID:0XuKQtD5日本語ユーザー名だとエラーになるっていう体たらくだよ。
完全にSJISがMicrosoft自身の足も引っ張ってる
0790デフォルトの名無しさん
2016/02/08(月) 00:20:53.72ID:+/8cbHLDなかったという類の問題でしょ。UTF-8だったとしてもやらかす奴はやらかす。
0791デフォルトの名無しさん
2016/02/08(月) 00:48:05.85ID:0XuKQtD5違うよ。日本語表示も(他の言語の表示も)できてる。予想だけど内部ではUTF-8で処理してんだろうよ。
ここまで書けば多数の人は何を指してるのかわかるだろうから具体的なゲーム名は言わないけど
そのゲームは
PC版(Java) → スマートフォンへの移植版(ネイティブアプリ版) → Windows10アプリ版
と移植されていったわけ、スマートフォンではUTF-8がデファクトスタンダードだから当然の結果だね。
で、Windows10版もUTF-8文字列をそのままファイル操作のAPIへ渡してしまったんだろうね
>>UTF-8だったとしてもやらかす奴はやらかす。
とはいってもSJISを"適切に扱う"ということと比べたら屁みたいなもん
それにこのゲームでの問題の適切な解決策はSJISを適切に使うではなくWindowsのみUTF-16へ変換してwide版のAPIを呼び出すだ。
0792デフォルトの名無しさん
2016/02/08(月) 01:08:11.78ID:B1wV/kIthttp://peace.2ch.net/test/read.cgi/tech/1444822140/
どうしてもここで語りたいなら言語と処理系を限定しろ
話が発散する
0793デフォルトの名無しさん
2016/02/08(月) 03:55:04.72ID:9ZhGg5zu半角英数字のみを使う
外人は日本語でのテストなどをやっていないから、
日本語などを使ったら、バグる
SEの常識だろ。日本語など、
誰もメンテナンス・テストしていないものを、
システムで使うのはおかしい
Linux・Macなんか、ファイル名に半角スペースがあっても、バグる
0794デフォルトの名無しさん
2016/02/08(月) 07:43:55.20ID:stcXIyTr0795デフォルトの名無しさん
2016/02/08(月) 08:08:27.71ID:+/8cbHLDiOSやAndroidのプログラミングしたことないのかね?
0796デフォルトの名無しさん
2016/02/08(月) 09:04:21.92ID:rq38tdFU0797デフォルトの名無しさん
2016/02/08(月) 09:17:28.34ID:5blmn2mR1. プログラム中の文字列型
2. OSのAPI
3. ソースコード
4. 入出力ファイル
4については、対応が必要なぶんの変換モジュールを用意すればよいだけ。
3については、1に決め打ちするのが楽だが、4があるなら変換して読み込めばいい。
で、Windows対応を謳うには以下のどちらかが必須。
・setlocale で 1=2 という環境に限定し、1に対してmblen等の適切な処理をする
・1=ユニコード (UTF-8/16/32は問わない) として 2=W系API を使う
Luaの実装はどちらでもないので、「Windows対応が完全ではない」と評価するのが妥当。
Squirrelなら後者になるようコンパイルできるので、この件に関しては問題ない。
他の環境はわからないが 1=ユニコード なら後者を満たしていると期待できそう。
0798デフォルトの名無しさん
2016/02/08(月) 11:43:28.74ID:M0j0fnEJ0799デフォルトの名無しさん
2016/02/08(月) 11:52:01.97ID:5blmn2mRそう。だから「この件に関しては」と書いた
他の要素、将来性などは……
0800デフォルトの名無しさん
2016/02/08(月) 14:05:07.38ID:rq38tdFUwindowsの cランタイムのsetlocale が utf-8 に対応さえしてくれれば悩む必要無いのにねぇ
0801デフォルトの名無しさん
2016/02/08(月) 22:35:54.46ID:jpNGf5dG>>796
上に載っかってるJavaとObjective-Cしか使ったことないの?
NSStringはUTF8Stringで、JNIではGetStringUTFCharsでUTF8の文字列を取れるけどUTF1 文字列で直接取得する方法ないぞ。
クロスプラットフォームの為にCやC++を扱うならUTF8にするのが常識
0802デフォルトの名無しさん
2016/02/09(火) 00:41:57.31ID:W9OWY02zデファクトって言うなら主要開発環境でみないと駄目じゃろ
0803デフォルトの名無しさん
2016/02/09(火) 07:41:05.80ID:Wb20B9c6UTF-16のtypoだろうが、NSStringならcharacterAtIndexとか、JNIならGetStringCharsとか。
0804デフォルトの名無しさん
2016/02/09(火) 07:54:13.04ID:OaLyyuyLNSStringはそのままUTF16だからgetCharactersでunicharでとれるな
UTF8用の処理は低層のUnixとのやりとりのためのものだし、その層ではutf-8が必要なのはもちろんだけど、それをAndroidやiOSの標準かのように言うのはおかしいと思うな
0805デフォルトの名無しさん
2016/02/09(火) 08:14:07.29ID:DpNg1xio外人は多いよ。
0806デフォルトの名無しさん
2016/02/09(火) 10:53:46.23ID:dd4nRHCaユニコードでさえあれば、内部のUTF表現まで気にする必要はないんじゃ?
特に文字列型がimmutableなら、複数の表現をキャッシュしても問題なさそうだし
>>805
日本人でも多くないか?
新しく言語を設計できるなら、CharはUTF-32であるべきだとは思う
0807デフォルトの名無しさん
2016/02/09(火) 12:19:21.81ID:+sr/gpA9それにluaがpythonに近づけばpythonを使う
0808デフォルトの名無しさん
2016/02/09(火) 12:28:04.23ID:OaLyyuyL話の流れはutf8がデファクトかどうか、です
実際にはutf16のが主流だろって指摘
外部はutf8でいいとして、内部で使うなら今後はやっぱ32だな。少なくともサロゲートペアの罠は回避できるし
0809デフォルトの名無しさん
2016/02/09(火) 14:09:36.45ID:+sr/gpA90810デフォルトの名無しさん
2016/02/09(火) 17:44:02.58ID:zKyrJnIKそれって言語の問題無の? 標準ライブラリで吸収できない?
0811デフォルトの名無しさん
2016/02/10(水) 08:02:28.26ID:2QwVjJmi0812デフォルトの名無しさん
2016/02/10(水) 12:03:00.48ID:ShaMeiRTiOSはCore*とかAndroidはC用API自体少ないけどAAssetManagerとかAStorageManagerとか
0813デフォルトの名無しさん
2016/02/10(水) 13:05:28.92ID:D1g79far>>797 の分類なら 1 (文字列型) はUTF-16の言語もあるけど
低レイヤのC言語APIを含む、2,3,4 (API/ソース等) はUNIX系ならUTF-8ってだけだろ
ほとんど全員の言っていることは正しいよ
で、互換性や過去のしがらみがない場合、文字列型のあるべき姿が
SJIS等の個別エンコードを触れるべきなのか、
UTF-8/16/32のどれかに見えるべきなのかは、また別の話
Luaを改造してUTF-32 Luaを作ってくれてもいいんじゃよ
0814デフォルトの名無しさん
2016/02/12(金) 08:59:17.26ID:w1PVoXoh>UTF8用の処理は低層のUnixとのやりとりのためのものだし、
の反論として書いただけなんだけどね
今から言語作るならUTF-32にすべきって人もいるけど俺はそうは思わないな、最近でた言語のgoも基本UTF-8だしswiftの文字列型も内部表現は21bitだし(UTF-32に近い物ではあるけど)ね。
goはコードポイント単位で扱いたい場合は32bit配列に変換するイメージ
文字列をfor rangeで回すとコードポイント単位で取れたりと扱いやすくはなってるけどね
(ソースコードのエンコーディングはUTF-8一択だと思ってるのでどうでもいいです)
冗談につっこむのもアレだけどUTF-32版のluaって何をUTF-32にするんだろうか。
string型?lua5.3からのutf8でstringを簡単にコードポイント単位で扱えるんだからstring自体をUTF32にする必要そんなに無いと思うけど
0815デフォルトの名無しさん
2016/02/12(金) 09:29:05.34ID:whWT7zC/「文字列型のエンコーディング」の話をする場合、
内部の保持方法なのか、文字単位で扱う場合の見え方なのかで祖語があったかも。
私見だが、内部表現は言語本体の開発者だけが知っていれば良いもので、
使う側は文字単位でしか扱えなくて構わないと思ってる。
UTF-8で保持して、文字を要求されるとUTF-32で返す実装ももちろんアリだ。
UTF-32 Luaもそんなイメージだった。
UTF-8での保持が前提だから、WindowsではUTF-16へ変換してW系のAPIを使えるし
長さ, substr, 正規表現 等は、バイトではなく文字数で指定させる。
0816デフォルトの名無しさん
2016/02/12(金) 11:00:48.21ID:x5lzfsVsUNIXとのやりとり≒C言語の文字列処理APIだから反論になってなくて同じこと言ってるだけだと思う
go言語は従来的な言語での「内部コード」相当は結局のところ32bitってことだよね
コンバートを言語仕様に組み入れて使いやすくしたところは偉いけど、複雑で面倒とも言える
0817デフォルトの名無しさん
2016/02/12(金) 13:17:26.15ID:w1PVoXoh中身Javaで書かれたAndroidのフレームワーク使うのがUnixとのやり取り?C言語だったらUnixとのやりとりなん?
センセーWin32を使うのもUnixとのやり取りに入りますかー?
>go言語は従来的な言語での「内部コード」相当は結局のところ32bitってことだよね
言ってる意味がわからん…。簡単32bitに変換できたら内部コードは32bit?
C++でも関数一つで変換出来るけどC++の内部コードは32bit相当になれますか?
ちなみにgoでlen(string)したらUTF-8でのbyte数返るよ。
0818デフォルトの名無しさん
2016/02/12(金) 15:01:37.11ID:XlZH7QFA無料ソフトがすごすぎて誰も確率やコスパの話をしない
0819デフォルトの名無しさん
2016/02/12(金) 22:39:27.60ID:Bbm2lPXRs/UNIX/C言語ベースのOSのAPI/でいい?
内部コードは以下のながれ
・今つくるなら32bitだろってのは「文字列型」の内部表現の話
・従来の多くの言語での文字列型は、長さ=文字数を期待してつくられた(実際は破綻したけどそれはさておく)
・go言語でも、文字数=長さで処理したい場合は、32bitなruneにするんだから発想は同じだよね?
0820デフォルトの名無しさん
2016/02/13(土) 01:24:52.89ID:M5U5EIyyだからC言語ベースのOSのAPI ってくくりだとUTF-8をまともに扱えないWin32も入るでしょ?何が言いたいのか全く解らんのだけど
GoのruneはあくまでもUnicodeのコードポイントが入るサイズの整数(int32)の配列であって文字列型では無いと思うけど。その配列をそのまま文字列として出力できないしね
0821デフォルトの名無しさん
2016/02/13(土) 01:55:35.83ID:24vNB1dvお互いさっぱりだね。
元の話は、スマホでデファクトなのはutf16じゃろってだけの話だよ
runeはあきらかに他の言語の「文字列型」を想定したものだと言ってるだけだよ。言葉遊びしたいわけじゃない
0822デフォルトの名無しさん
2016/02/13(土) 05:49:29.94ID:M5U5EIyyだからgoの文字列型はstringだろ。そこに異論がある?
runeは文字列からコードポイントの配列を取るだけ。
そんなもん他の言語、Luaにすら5.3からあるわ
スマホがUTF-16がデファクトってのも上に乗っかってるJavaとObjective-C(Swift除く)だけ使うならそうだろうよ。
でも一番最初の話はスマホへゲームを移移植するときの話 でAndroidもiOSでも動かす場合はUTF-8がデファクトスタンダードだって話をしてたんだ。それをUTF-16だろってツッコミ入れられたから反論してるだけで最初から俺はJavaとかObjective-Cは話の外にあんの
0823デフォルトの名無しさん
2016/02/13(土) 07:08:29.64ID:tl7vIPkr>AndroidもiOSでも動かす場合はUTF-8がデファクトスタンダード
とりあえずこれ、まともに根拠を示せてないんだけど。
0824デフォルトの名無しさん
2016/02/13(土) 07:42:00.73ID:6QXsiJCAその上で動作する組み込み言語の話をせよ
0825デフォルトの名無しさん
2016/02/13(土) 12:35:56.00ID:AxbgYY0vUTF16は中途半端感が半端ないよな
0826デフォルトの名無しさん
2016/02/22(月) 21:10:17.21ID:6cWcowj10827デフォルトの名無しさん
2016/02/23(火) 00:28:29.80ID:liQI2ylD0828デフォルトの名無しさん
2016/02/23(火) 10:19:51.72ID:kQ/gcKij目的:C++で実装したクラス(lua クラス バインド でggって出てきたページを参考に作成)を
Luaでnewしてインスタンスを生成、それを更にC++で実装した
全く別の独立した静的関数にそのまま渡してその関数内でインスタンスへの変更処理を行う
実装:関数の引数にluaのソースのtestclass:new()によって生成したインスタンスを指定すると
C++側からはlua_Stateのスタック経由でユーザデータで渡ってくると仮定して実装してみた
結果:C++で実装したクラスのlua側から生成したインスタンスの稼動は正常な模様。
しかし、そのインスタンスをC++の関数で参照する際、
肝心のインスタンスを取得する際に実行しているluaL_checkudata()にてエラー発生、
エラー出力は "bad argument #-2 to 'lua側に公開しているメソッド名'( expected, got userdata"。
ステップインしてみるとlauxlib.c(309)、luaL_testudata()内のlua_rawequalの結果の判定にて
/* value is a userdata with wrong metatable */ とコメントされている箇所でNULLが返されている。
(#-1にはluaのソースでの [クラス名]:new() のコロン使用での暗黙の第一引数が入っている?憶測)
備考:簡単なスタックダンプで見る限りではユーザデータしか積まれていない様に見える。(主観)
徹夜してまで追跡しても方法わからず、何か勘違いや問題点があったら教えてくらはいおながいします
0829デフォルトの名無しさん
2016/02/23(火) 12:27:23.57ID:UPC5owG9(★ expected, got userdata
のエラーメッセージで、正確な★の値を確認してほしい。
luaL_checkudata は引数 tname の文字列で型チェックをするのだが、
luaL_newmetatable や luaL_setmetatable で登録したものと一致しているだろうか?
0830デフォルトの名無しさん
2016/02/23(火) 16:36:12.58ID:liQI2ylDそれはbinderの質問だな
binderは何を使ってるの?
その問題が再現する最小のコードを作って作者に質問すりゃいいよ
英語が苦手ならここでもいいけど解決する保証はできん
0831デフォルトの名無しさん
2016/02/23(火) 21:28:17.51ID:kQ/gcKij>>829
Luaでnew()したC++のクラスのインスタンスを受け取る関数で実行してるとこで
void * const pv = luaL_checkudata( pluastate, -1, "TestClass" );
にするとそのまま(hoge expected, got userdata)になっちゃった
C++のクラスのテーブル作ってるとこのlua_setglobal( pluastate, "TestClass" );と同じでもダメだし
もちろんC++側でのクラス名でも変わらず
>>830
binderはざっくり検索した範囲だと大きかったりboost必須だったり
更新してなかったりで将来に不安が残る感じで何も使ってないの、アメリカ語は_〜
クラスのテーブル作るとこで型名を明示的に指定してやったりしないといけないのかな
きっとthisの値を生で吐き出すメソッド実装してそれを関数に渡せば何とかなるんだろうけど
そういう力技あんまし使いたくないし後々すんごく気持ち悪くなりそうな・・・
0832デフォルトの名無しさん
2016/02/23(火) 21:43:48.82ID:kQ/gcKijCString str = lua_typename( pluastate, -1 );
してみたんだけど "no value" になった、lua_type()は相変わらずユーザデータ
念の為luaのソースで引数を数値にしてC++の関数でluaL_checkinteger()に入れ替えると
正しく整数がそのまま流れてくるから位置は間違ってない可能性が高いと思ってる(憶測)
メタテーブルと言っても所詮(?)はユーザデータだし、
ユーザデータ作る時にlua_setglobal()の前後で明示的に型名を指定してあげないとダメなのかな?
0833デフォルトの名無しさん
2016/02/23(火) 21:50:32.63ID:UPC5owG9エラーメッセージを加工しないでくれ。
luaL_checkudata( pluastate, -1, "TestClass" );
の呼び出しで
hoge expected, got userdata
の表示はありえない。hoge はどこから来たんだ?
「Luaでnew()した」だとどこが悪いのか切り分けられないから
まずは、Luaスクリプトを使わず、C APIのみで作成と取得を試してはどうか?
気になるのは lua_setglobal("TestClass") と書いていること。
luaL_checkudata の tname 引数は luaL_*metatable 系で使った
C側の内部的な文字列であり、Lua側に公開した変数名ではないぞ?
0834デフォルトの名無しさん
2016/02/23(火) 21:51:06.03ID:liQI2ylDそうなんか。
まあ俺も使ってたbinderに不満があってオレオレbinder作っちゃったから人の事言えないけど
classや関数一つ一つスタックで操作するのはミスしやすいしお勧めしないよ。
classの登録
luaL_newmetatable(L, "TestClass");
〜stackの一番上にtableが入ってるのでそれに対してメンバーの登録処理が続く。
newの中
void *storage = lua_newuserdata(L, sizeof(TestClass));
new(storage) TestClass();
luaL_setmetatable(L, "TestClass");
引数の受け取り
TestClass* ptr = static_cast<TestClass*>(luaL_checkudata( L, 1, "TestClass" )); //1個めの引数
0835デフォルトの名無しさん
2016/02/23(火) 22:01:41.19ID:liQI2ylDメタテーブルはユーザーデータではないぞ
ユーザーデータにメタテーブルって形で普通のテーブルを設定できるだけでメタテーブル自体はtable型
ユーザーデータはテーブル参照されると、そのユーザーデータに設定されているメタテーブルを参照して
値があればそれを返す
>>833
hogeは察するにlua側の関数名だろ
0836デフォルトの名無しさん
2016/02/23(火) 22:03:44.40ID:liQI2ylDlua_typename( pluastate, -1 );
この第二引数はスタックのindexではなくlua_typeで返る値
0837デフォルトの名無しさん
2016/02/23(火) 22:50:47.99ID:kQ/gcKijすまない、hogeからもう一度TestClassやluaTestClass、その他の定義
色々試し直してたら不一致になってしまった
LuaからC++、C++からLuaは既に成功していて、C++からC++も既に成功というか
OpenCVの亜種とFreeBSDのlibの一部をLuaに機械的な手作業でバインドしようとしてるから
その辺りの実績は問題ない・・・筈
>>834
凄いヒントをありがとう、今までnewの後にluaL_setmetatable()はしてなかった
けど単純に追加しただけじゃダメらしい、相変わらず同じメッセージが出力されて失敗する
>>835>>836
メタテーブルの認識を間違えてたんだ、それとlua_typename()の第二引数・・・
勉強し直して再確認して出直してくる
OpenCVの亜種とBSDのlibのヘッダのインクルードやらリンクやらでソース丸々アップとか難しい状態
文字でしかやりとりできない、もどかしくてごめんね、みんなありがとう
0838デフォルトの名無しさん
2016/02/23(火) 23:12:34.76ID:liQI2ylDluaL_setmetatable はスタックの一番上の値に対して引数で与えた名前のメタテーブルを設定する
メタテーブルの名前はluaL_newmetatableで作った時のもの。
http://www.lua.org/pil/24.2.3.html
ここにstack dumpのサンプルコードがあるからそれで出力して色々なタイミングのスタックの状態を
printfデバッグすりゃいいんじゃないかな
Lua5.3以降ならluaL_newmetatableした時にそのテーブルに__nameが設定されるから
例えば上記URLのstackDumpで
case LUA_TUSERDATA:
if (luaL_getmetafield(L, i, "__name") == LUA_TSTRING)
{
printf("userdata:%s", lua_tostring(L, -1));
lua_pop(L, 1);
break;
}
ってするとユーザーデータに設定されているメタテーブルの名前も一緒に出力できる
0839デフォルトの名無しさん
2016/02/23(火) 23:30:00.22ID:kQ/gcKij一発でわかった、ありがとう、ありがとう、そして一番のキーワードは>>834のluaL_setmetatable()
目的:C++で実装したクラス(lua クラス バインド でggって出てきたページを参考に作成)を
Luaでnewしてインスタンスを生成、それを更にC++で実装した
全く別の独立した静的関数にそのまま渡してその関数内でインスタンスへの変更処理を行う
問題:割愛
原因:Lua側でのいわゆるクラスの型情報であるグローバル変数の実体の作成時に、
クラスのテーブルの作成にもユーザデータ共通のメタテーブルの作成にもlua_newtable()を使用していた
対処:
正しく(?)は、メタテーブルの作成の際にはluaL_newmetatable()を使用するべき
憶測(言い訳?):
メタテーブルであるべきところをネットのサンプル通りに普通(?)のテーブルで実装してしまった為、
単純なC++からLua、LuaからC++のやりとりでは不都合が出なかっただけだと思われる
長文かつサンプルの提示なしの質問に長々と付き合ってくれてありがとうございました、無事解決しました
0840デフォルトの名無しさん
2016/02/24(水) 08:09:28.85ID:4eLJNqm50841デフォルトの名無しさん
2016/03/08(火) 07:25:35.42ID:kiMIo1Bf0842デフォルトの名無しさん
2016/03/08(火) 07:37:15.49ID:kiMIo1Bf0843デフォルトの名無しさん
2016/03/20(日) 11:05:43.19ID:S+FF32wmgoogleのJavaScriptエンジンv8をVS2015のレガシーなC++でビルドして
VS2015のC++/CLIでリンクして実行するとヒープ破壊のエラーが出て落ちます。
(デバッガでトレースが始まる前の段階で落ちているので追跡しようがありません)
v8::V8そのものへの参照を全てコメントアウトすると落ちずにmain関数に入ってきます。
何か特殊な設定か対処の類が必要なのでしょうか?
それともC++/CLIがダメ子ちゃんなのでしょうか?
0844デフォルトの名無しさん
2016/03/20(日) 11:49:11.85ID:Byvmq8tFその組み合わせは使ったことは無いが、もしネイティブC++で問題ないなら
2種類のGCを持つ環境が競合しているんだろうな
v8 の代わりに Chakra JsRT なら、MS同士だから実績があるかもしれない
0845デフォルトの名無しさん
2016/03/20(日) 22:46:48.41ID:S+FF32wmgc回りの机上でのコード追跡に挫折しました・・・
v8のコードを一切コールしなくても、v8::V8回りがリンクされるだけでダメっぽいです。
CRT回りの静的変数の初期化の時点でヒープ破壊のエラーが発生してしまうので
(ソースをちょっといじるだけでエラーの種類が変わるのでここで書いても意味がないと判断)
ChakraCoreをいじってみます、レスありがとうございました。
0846デフォルトの名無しさん
2016/03/20(日) 23:22:32.65ID:Byvmq8tFhttps://en.wikipedia.org/wiki/List_of_ECMAScript_engines
WindowsオンリーならChakraで十分
速度がいるならv8だけど、巨大で複雑な部類だとは思う
Duktapeやv7はLua感覚で使えそうだけど、品質や実績はよくわからない
0847デフォルトの名無しさん
2016/03/21(月) 00:04:57.23ID:jBN/3X9xけどv8ですらまだドキュメントやサンプルが多い方だったんですね。
(Isolateの実装で殆どがコンパイルに通らなくなった様ですが)
ChakraCore一つとってみても例えば
var userobj = new Userobj();
NativeGlobalFunc( userobj );
を実現する道筋の調査に一苦労、
1時間調べてもオブジェクトの作り方すらまだ確信が持てていない状態・・・
片っ端から調べ直して出直してきます。
0848デフォルトの名無しさん
2016/03/27(日) 14:51:27.25ID:WUzBhCSW吐き気がする気持ち悪い・・・
結局教育機関が作る言語はどれも学生脳の自慰言語ばっかかよ
0849デフォルトの名無しさん
2016/03/27(日) 15:03:16.21ID:9eGj+oKvLua 1.1 は 1994年。そのころはPascal系もまだ元気だったんだ。
自然淘汰の結果として死滅しただけで、最初から未来が見えてたわけじゃない。
今なら、LuaのVMやAPIを真似たJavaScript実装 (>>846) や
先行き不安なSquirrelなど、自分で組み込むなら選択肢はある。
使う側ならどうしようもないが。
0850デフォルトの名無しさん
2016/03/27(日) 15:12:37.47ID:WUzBhCSWおとなしくうっすいトランスレータ書くわ
0851デフォルトの名無しさん
2016/03/27(日) 15:18:28.87ID:Pr6yzqXD公式のJavaよりもC++に近いが彼らが負けを認めることはないだろう
負けを認めない相手と張り合うのは時間の無駄
0852デフォルトの名無しさん
2016/03/27(日) 21:30:21.55ID:H7mb6W0C定義されていなければ{}を返すようにメタを設定することはできますか?
0853デフォルトの名無しさん
2016/03/27(日) 21:46:25.71ID:xKhiQxW2luaの話?
であれば__newindexで{}返す関数を設定すればいい
0854デフォルトの名無しさん
2016/03/28(月) 01:39:38.42ID:WtaHq3/v0855デフォルトの名無しさん
2016/03/28(月) 03:40:07.32ID:zJAWFm4u$ lua
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> pp = require 'pl.pretty'
> mytable={1, 2, 3}
> pp.dump(mytable.test)
nil not a table
> setmetatable(mytable, {__index=function() return ({}) end})
> pp.dump(mytable.test)
{
}
0856デフォルトの名無しさん
2016/03/28(月) 04:37:20.45ID:OzjTEsq7すまん。
>>855
せやったな。
__newindexは代入したときに無かったらや。
0857デフォルトの名無しさん
2016/03/28(月) 12:35:11.30ID:K6EkYblLSafe Navigation Operator 的な動作なら、そっちのほうが良いかもしれない。
0858デフォルトの名無しさん
2016/03/30(水) 08:03:28.46ID:MvqxUS0Kプログラマーではない人をターゲットにしていたからだよ。
つまり英語をある程度知ってる人なら内容を理解できるようにってこと。
パスカルを真似ったってよりも日本語ベーシックみたいなものかな。
0859デフォルトの名無しさん
2016/03/30(水) 10:21:33.98ID:PJ1J1ZJR普及してるからそれが普通に見えるだけで
0860デフォルトの名無しさん
2016/03/30(水) 10:50:30.01ID:IKaSwJOVSwiftも { } は使うけど ( ) が無いから気持ち悪いんだろうか?
0861デフォルトの名無しさん
2016/03/30(水) 11:35:11.53ID:mjOFe187local i, j = f(x, ...)
int i=0, j=0; のような文法をそのまま採用するのは無理
0862デフォルトの名無しさん
2016/03/30(水) 13:09:07.35ID:MvqxUS0Kうごけ x=x+1 まで x < 10 おわり
0863デフォルトの名無しさん
2016/03/30(水) 13:44:09.05ID:UL6gISrgそんなノリで「ならおまえが作れよ」でObjective Pascalやら○言語やら
色々出たし確かに文脈としてはCよりマシだったけど結局普及しなかったしな
一旦普及しちまうとIA64やらOSXやら互換性を捨てたモンが代替に成り上がるのは難しいね
過去のソースの流用だけじゃなくてコーダーの慣れとかの問題も含めて
>>862
ぴゅう太だっけか
今なら[ #define もし if( ] [ #define おわり ) ]とかで凌げるのかね?
0864デフォルトの名無しさん
2016/03/30(水) 23:36:59.47ID:/8cK4WLw0865デフォルトの名無しさん
2016/03/31(木) 01:03:50.28ID:zQkq4gxf0866デフォルトの名無しさん
2016/03/31(木) 02:59:26.18ID:nACjm5l+{}の変わりにdo endがあるでしょう
0867デフォルトの名無しさん
2016/03/31(木) 20:47:53.62ID:nkzU0v9F1年またぎで RC1 が正式リリースになったのか うっひょーー
0868デフォルトの名無しさん
2016/04/01(金) 06:14:44.27ID:rWTRiDhV間が空くと細かいとこ忘れがちだしちょいと心配なリリースではある
0869デフォルトの名無しさん
2016/04/07(木) 01:07:47.63ID:dZYAORArfunctionA(value)
functionB(value)
functionC(value)
この時に、値渡しでなく参照渡しにする方法はありますか?
戻り値で返してもらうとかしないと駄目でしょうか?
0870デフォルトの名無しさん
2016/04/07(木) 01:37:09.92ID:m5Wmq6v/総合スレだから言語を明記してね
Luaだとすると参照渡しはない
戻り値か、テーブルで渡して中身を書き換える
具体的な用途が決まってるなら別解もあるかも
0871デフォルトの名無しさん
2016/04/07(木) 01:49:59.00ID:dZYAORAr言語はluaです。
returnを書き忘れそうなんで、
下記みたいなゲッターセッターのクロージャ渡すことにします。
後で拡張するのも楽そうだし。
ありがとうございます。
local value
function getter_setter(val)
if val != nil then value = val end
return value
end
0872デフォルトの名無しさん
2016/04/07(木) 23:57:49.14ID:s1RKY7Zg変な理由だな。returnを忘れるぐらいだったら代入とかクロージャの呼び出しを忘れる心配もしなければならなくない?
0873デフォルトの名無しさん
2016/04/08(金) 00:31:02.22ID:NMv2dsC8参照渡しの主な用途は、複数の返値か、変数の入れ替えだと思うんだが
Luaだと自然な記述でどちらも書けるから必要になったことはないなぁ
その例なら value = val or value みたいな書き方もできるし
0874デフォルトの名無しさん
2016/04/08(金) 09:00:43.43ID:QHM1+lud必須じゃないからreturnいらないし、呼び出し忘れたってかまわないです。
ただ、生存期間中は使いたい場合があるのです。
0875デフォルトの名無しさん
2016/04/08(金) 09:05:33.22ID:Awm5dteq0876デフォルトの名無しさん
2016/04/08(金) 10:02:48.01ID:NMv2dsC80878デフォルトの名無しさん
2016/04/08(金) 18:15:07.93ID:QKtAKDZQif err ~= nil then return err end
これを参照渡しのように f(seterr) と書くのは合理的だと思う
人間がみんな合理的に行動すればコミュ力は重要ではないかも
0879デフォルトの名無しさん
2016/04/08(金) 21:19:50.62ID:ZsT2Hxo0どう合理的なんだ?
seterrのエラーチェックしてないからイコールなコードでもないしどういう利点が有るのか説明してよ。
r=assert(f());
のような書き方出来なくなるし
0880デフォルトの名無しさん
2016/04/08(金) 21:32:21.04ID:QKtAKDZQ0881デフォルトの名無しさん
2016/04/08(金) 22:34:01.66ID:NMv2dsC8日本語でおk
JavaScript でいう Promise の reject ハンドラのような意図か?
Luaは例外処理 (try-catch) が書き難いから、その手の用途なら必要性は理解できる。
0882デフォルトの名無しさん
2016/04/09(土) 01:02:16.06ID:EFL/mBbR何もしないで続行するのは自由だからそれでいいけど
後で念のため再度エラーチェックする自由も欲しい
0883デフォルトの名無しさん
2016/04/09(土) 02:22:04.50ID:u1ofpue+0884デフォルトの名無しさん
2016/04/09(土) 07:21:19.22ID:FoBfIIvs0885デフォルトの名無しさん
2016/04/09(土) 07:34:56.67ID:u1ofpue+そうかもな、どういう場面か具体的なコードで示してくれるとありがたい
合理的なコードならありふれてるよね?
あと例外は複雑になりやすいからGoとかでも例外は排除して多値でエラー返すようにしてる
0886デフォルトの名無しさん
2016/04/09(土) 08:25:05.90ID:WDrzc2WmむしろLuaもGoも複数の返値を持てることがポイントだと思う。
{ 本来の返値, エラー? } のペアを返すという発想で、合理的。
「例外」という別口をわざわざ用意しなくて良くなった。
ただ、All or Nothing のトランザクション等、処理事にエラー値の確認が面倒というのも想像できる。
その場合、Luaの流儀なら >>879 の assert のように、エラー値を例外ジャンプに変換する関数で包むべきなんだろうな。
0887デフォルトの名無しさん
2016/04/09(土) 08:38:40.76ID:FoBfIIvs関数が関数テーブルに構造化されている場合、多値を返すと他の関数と戻り値の仕様がごちゃごちゃになってくるので、引数のレベルで疎結合にしておきたい。
0888デフォルトの名無しさん
2016/04/09(土) 08:50:59.47ID:EFL/mBbR嘘だとわかる場面に出くわした
0889デフォルトの名無しさん
2016/04/09(土) 09:01:44.19ID:WDrzc2Wm関数テーブルに構造化されていると言うなら、
引数や返値含め、全ての関数は同じ型であるべきだろう。
それぞれが違うなら、それは構造化ではなく寄せ集めだ。動的型言語に甘えてる。
0890デフォルトの名無しさん
2016/04/09(土) 09:19:31.93ID:l8xjVqJCしなくていいという理由が大きいと思うが。
タプルを返せるのはステータスを参照型の引数に返すよりは合理的だとは思うが
例外の代用になるかというとそれはちょっと違うと思う。
0891デフォルトの名無しさん
2016/04/09(土) 09:23:54.21ID:WCRIlqKIいずれにせよtry-catch-fainalyは標準で欲しいな
0892デフォルトの名無しさん
2016/04/09(土) 09:43:40.75ID:EFL/mBbR失敗時の記述が不要というのはexitでもできる
スレッドがあるならスレッドを止めてもいい
なので本当の理由は、プロセスやスレッドの起動・再起動が遅すぎるからじゃないか
0893デフォルトの名無しさん
2016/04/09(土) 11:18:07.50ID:8JT9QS2Iというかオプソなんだし気に入らないなら修正すりゃええやん
他と互換性なくていいならやりたい放題なんだし、
その修正を公開してメジャーになったとしたらバックポートしてくれるかも知れんでよ
0894デフォルトの名無しさん
2016/04/09(土) 11:28:03.33ID:WDrzc2Wm旧来の書き方がしたいならばその通りなんだが、
非同期処理が一般的になってきた昨今では、最良かどうかは分からない。
tryブロック内で処理が同期的に完了するとは限らないから。
タプル返しも、error/pcallも、rejectハンドラ渡しもできるから、現状のLuaで十分汎用性はある。
せいぜい構文糖のためにパーサを改造したくなるくらい。
0895デフォルトの名無しさん
2016/04/09(土) 12:43:02.89ID:FoBfIIvsただのトレードオフ。
どこを重視するかは自由。
0896デフォルトの名無しさん
2016/04/09(土) 13:38:58.58ID:u1ofpue+引数にしたら引数の仕様がごちゃごちゃになってくると思うんだけど。
引数を受け取るだけの関数を渡せとなるなら尚更
0897デフォルトの名無しさん
2016/04/09(土) 14:08:41.76ID:u1ofpue+別にluaに限定する必要ないよ
引数で返すのが合理的に見えるコードであれば
C言語みたいに返値を一つしか返せないからって理由なのは無意味だから外して欲しいけど。
>>890
何もしなかったらそのままアプリが終了するだけじゃん
個人的にはtry catchは要らないかな。Goが例外無くしたのと同じ理由で
0898デフォルトの名無しさん
2016/04/11(月) 08:27:07.88ID:k7zVs+aP確かにGo的なのでいいかもな。
ttp://www.geocities.jp/m_hiroi/golang/abcgo15.html
足りないのはdeferとrecoverかな?
deferは__gcメタテーブル使えばできそうだけど標準で欲しいな。
recover はわからん。
0899デフォルトの名無しさん
2016/04/11(月) 08:58:49.07ID:WTwt1caFdeferのようなものは例外とは関係無いところが理由で欲しいね
途中returnでclose書くの面倒とかそういう所で
gcに任せてたらいつ実行されるかわからんし
recoverはpcallでいいんじゃないかな
0900デフォルトの名無しさん
2016/04/11(月) 09:29:17.60ID:AFQC7gKw0901デフォルトの名無しさん
2016/04/11(月) 10:19:40.88ID:UaC8pXHzLuaのソースを読んでると
スコープを抜けるタイミングでクロージャのupvalueを閉じる処理があるから
その辺りを改造すると、スコープ終了時に何かする機能が追加できる気がした。
0902デフォルトの名無しさん
2016/04/12(火) 00:55:24.80ID:JDMXFvBX0903デフォルトの名無しさん
2016/04/12(火) 01:26:42.97ID:fKt10c2M0904デフォルトの名無しさん
2016/04/13(水) 22:16:47.11ID:PD+aqUpV負荷が高いものはCやC++で書けばいいしやっぱ速度はそれ程重要じゃないのな
0905デフォルトの名無しさん
2016/04/13(水) 22:23:51.85ID:7YNUgm8C例えば、メッセージテーブルみたいなのをloadfileで読み込んで使いたいです。
MSG.PLEASE_INPUT_ANY_KEY
0906デフォルトの名無しさん
2016/04/14(木) 08:00:44.86ID:PaNxRcDiスコープというのはブロック単位のことだと思うんだけど
確かにブロック単位でdeferができれば便利ですな。
個人的にはdeferという単語はイマイチだけど
0907デフォルトの名無しさん
2016/04/14(木) 08:31:22.32ID:PaNxRcDi0908デフォルトの名無しさん
2016/04/14(木) 12:08:10.65ID:z7Vrjvws何か勘違いしてない?
0909デフォルトの名無しさん
2016/04/14(木) 17:46:31.38ID:PaNxRcDiなぜ勘違いしてると感じたの?
0910デフォルトの名無しさん
2016/04/15(金) 00:30:26.65ID:MuKGbCph突然gotoが出てきたから
0911デフォルトの名無しさん
2016/04/15(金) 04:18:23.81ID:+t9YcmSiでも思ったことをそのまま喋ったら明らかな失言や暴言や嘘も増える
脅迫や詐欺みたいな発言を連発するよりは、少し意味不明な方がマシじゃないか
0912デフォルトの名無しさん
2016/04/15(金) 07:45:58.29ID:Hp4CXrU7だってさ、たとえば ::finally:: というラベルを作って、
if エラー発生 then goto finaly end とかやればいっしょじゃね?
0913デフォルトの名無しさん
2016/04/15(金) 08:24:11.24ID:uS8f5f96全然違う。それだと途中でreturn出来ないし、しないように注意しなければいけない。
コーデイング規約でreturnはfinallyラベルの後の一つだけにするって定めるつもり?
それに後処理が必要になるものはそのすぐ近くにそれを書きたいもの。
0914デフォルトの名無しさん
2016/04/15(金) 08:41:49.74ID:+t9YcmSi2. 行きたくない人などいるはずがないからreturn出来ない
0915デフォルトの名無しさん
2016/04/15(金) 09:10:31.83ID:9cTSD0EJ「エラー処理をどうするか」なら良いのだけれど、話の流れは
「エラー処理を忘れないようどうするか」だったと思うんだ。
Luaに限れば、必ず後始末したい場合は pcall が必須なのがメンドイ。
0916デフォルトの名無しさん
2016/04/15(金) 09:56:06.34ID:Hp4CXrU7ただそういうのは織り込み済みの上で gotoで足りると中の人は考えてるのかもしれないなぁ、ということ。
これって勘違いというほどのもの?
0917デフォルトの名無しさん
2016/04/16(土) 15:05:29.04ID:ls9rc/e1例えばホスト側が「文字列を丸ごとファイルに書き出す」機能を公開すれば
スクリプト側で「失敗したらファイルを閉じて削除して〜」などと考えず済む。
汎用言語なら細かい粒度のAPIのほうが小回りが利くけど
所詮組み込み言語なんだから「どのように」ではなく「何をしたい」単位で記述させたほうが良い。
0918デフォルトの名無しさん
2016/05/01(日) 13:23:19.66ID:tKi6j9CTBitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0
0919デフォルトの名無しさん
2016/05/15(日) 09:01:08.96ID:WYUaDR6g0920デフォルトの名無しさん
2016/05/15(日) 12:38:52.61ID:llz61aSC車輪の再発明?知らんな!
0921デフォルトの名無しさん
2016/05/15(日) 12:41:10.00ID:WYUaDR6gそれだと意味が無いんですよ
0922デフォルトの名無しさん
2016/05/15(日) 12:42:54.01ID:ZVMufeYJ結局リファクタリングしたなんてこともあったな
効率はともかく他人のコードのリファクタリングも結構勉強になるし
とりあえず無難そうなのを選んで落としてデッドコピーしてみたら?
0923デフォルトの名無しさん
2016/05/15(日) 13:13:01.22ID:WYUaDR6gなので、ぱっと見修正量多いから自分で修正したくないしメンテもしたくないから何処かから引っ張ってこれるのが理想なんですけど
欲を言えば5.1以降全部に対応してたらいいんですが…
0924デフォルトの名無しさん
2016/05/15(日) 13:30:11.07ID:iV9cVQst0925デフォルトの名無しさん
2016/05/17(火) 15:46:15.62ID:WJtZW0Wvタップからタップまでをusleepで停止させると後半になるにつれ目的の時間から遅れてしまいます
もちろん処理にかかる時間をはusleepから引いています
処理を停止させる命令はusleepの他にはないでしょうか
遅れる原因が何故だか分かりますか?
0926デフォルトの名無しさん
2016/05/17(火) 16:16:50.99ID:awF8sDTJとりあえず >>713 に似たような質問があるな。
「目的の時間」と「処理にかかる時間はusleepから引いて」あたりを
詳しく説明してもらわないとコメントのしようがないと思う。
現状の処理が適切かわからないし、むしろ音ゲー側の時間がずれている恐れも。
0927デフォルトの名無しさん
2016/05/17(火) 16:37:01.75ID:WJtZW0Wv過去にあったんですね、遡ってみます
os.clockでタップ処理にかかる時間を計ってusleepの停止時間からマイナスしてます
0928デフォルトの名無しさん
2016/05/17(火) 17:11:06.80ID:aW8j1xwW前にも書いたけどos.clockは実際の経過時間ではなくプログラムが使ったCPUの時間を返す
sleepとかで待ってる間は増えないし、例えばそのプログラムで二つのコアが100%使われてる場合は実時間の二倍増える
Cのclock関数で実装されていて、それはLinuxだとclock_gettimeのCLOCK_PROCESS_CPUTIME_IDの返す値が使われてる。
0929デフォルトの名無しさん
2016/05/17(火) 17:24:24.06ID:WJtZW0Wvタップ処理ににかかる時間を計るのに使ってます
問題の待機時間には使ってないです
コアが2つ使われてたら2倍っていうのは気になりますが前半は目的のタイミングでタップされているので問題ないですかね…
0930デフォルトの名無しさん
2016/05/17(火) 17:54:24.20ID:awF8sDTJタップ処理にかかった実時間とCPU時間が等しい保証が無いという意味。
君が欲しいのは「実時間」だが、os.clockは「CPU時間」だから加減算できない。
身長と体重の値を足すようなもの。
(Luaからデフォルトで使える) 標準Cだけだと1秒より良い精度は無理と言われてる。
http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c
| There is no ANSI C function that provides better than 1 second time resolution
autotouch APIに高精度タイマーは用意されてないかな?
Lua から clock_gettime 等を呼ぶモジュールを加えるのも難しいか?
なお、Windowsのclockは(あえて)実時間を返すようだ。誤解が多い原因かもしれない。
https://msdn.microsoft.com/library/4e2ess30.aspx
| The elapsed wall-clock time since the start of the process
| Note that this is not strictly conformant with ISO C99
0931デフォルトの名無しさん
2016/05/17(火) 20:04:41.45ID:aW8j1xwW補足サンキュー
しかしCPU時間返されてもベンチマークぐらいしか使い道ないよね。
でも文句はそれしか用意してない標準Cに言うんだ。Luaは高い移植性のために標準Cから外れる物は極力実装しないんだ
0932デフォルトの名無しさん
2016/05/18(水) 08:00:35.07ID:6L3zAH6bコア毎に記録する機能でも積んでなきゃ、
目安になりそうな計測をして加算し続けるくらいしか現実的な手段ないからね
マルチメディアタイマ動かすスレッドを裏側に置いてポーリングするか
別のコンテキストでタイマのタイムアウト毎にスクリプト起動するとかしかないんじゃないかな
(メインのスレッドと同じコンテキストで実行しちゃダメだよ)
0933デフォルトの名無しさん
2016/05/18(水) 09:46:49.35ID:k2SHVqf6名前に騙されて、古代の課金処理を現代のプログラムで使うからおかしくなるんだよ
0934デフォルトの名無しさん
2016/05/18(水) 15:47:48.90ID:bch1M3Ro皆さんありがとうございます
autotouchのAPIになさそうです
autotouchでclock_gettime使ってみます
0935デフォルトの名無しさん
2016/05/25(水) 01:28:46.05ID:PQF3VaRVあーだこーだ探したり高いライセンスを払うより
1から自分で作ったほうが速い場合も多々ある
0936デフォルトの名無しさん
2016/05/26(木) 10:31:37.40ID:lpov0tDn組み込みを意識してVM自体をなるべくROMにおいやったり
定数になるべくデータを追いやったりしてRAMやスタックの消費量抑えたりみたいな細工をする事無く
素直でわかりやすく、高速なコード書き放題だもんな
0937デフォルトの名無しさん
2016/05/26(木) 10:49:26.89ID:LqK2D4Ix自分で作ったほうが早い場合はありそうだな
0938デフォルトの名無しさん
2016/05/26(木) 18:41:47.35ID:iZpcR2mhなかなかそうはいかないよね
0939デフォルトの名無しさん
2016/05/26(木) 22:46:21.63ID:kkdzC4Pz0940デフォルトの名無しさん
2016/05/27(金) 03:25:00.38ID:fvoGjXwU0941デフォルトの名無しさん
2016/05/31(火) 20:56:31.07ID:J6Jy3eBOgr-sakura2ボードが新たに発売されたんでmrubyやろうと思ったら、ライブラリとかv2なっててどうしようかと。
mruby入りスケッチビルド通ったんで焼いてもだんまりだわ。デバッグする方法あるのかな(汗
0942デフォルトの名無しさん
2016/06/01(水) 22:16:27.31ID:ItE+il1Rgr-sakuraは別の意味の組み込みじゃなかろうか
0943デフォルトの名無しさん
2016/06/07(火) 13:17:30.66ID:Cceun6yBLuaのメンテナンス・ポリシーだと最新版しかバグ修正されないのね
最近見つかった昔からあるバグでも5.3しか修正版が出ない
diff形式で公開されているから自分でどうにかしろってことか
0944デフォルトの名無しさん
2016/06/07(火) 15:13:34.60ID:1jTwDXeQ0945デフォルトの名無しさん
2016/06/11(土) 10:50:09.10ID:8vn3zKAGfunction Hoge
return{
Foo=function end
};
end
みたいなクラスです
0946デフォルトの名無しさん
2016/06/11(土) 10:50:57.07ID:8vn3zKAG0947デフォルトの名無しさん
2016/06/11(土) 17:55:08.38ID:XziS+43Hvar foo = ...
foo["Foo"]();
とかでいけるんじゃない?
0948デフォルトの名無しさん
2016/06/11(土) 18:00:29.69ID:8vn3zKAGキャストしてCall呼び出したらいけました
0949デフォルトの名無しさん
2016/07/16(土) 14:37:12.17ID:ClCwwHutひとまずデバッグ用にバイナリ文字列をHexダンプするコードを書いてみる
Lua5.3.3(UPX圧縮後で250,064 Byte)
path = "C:/Windows/system32/calc.exe"
f = io.open(path, "rb")
f:seek("set", 0)
b = f:read(512)
f:close()
io.write("\"" .. path .. "\" / " .. string.len(b).."Byte Dump...\n")
i = 1
l = ""
repeat
w = string.sub(b, i, i + 15)
for c in string.gmatch(w, ".") do
l = l .. string.format("%02X ", string.unpack("B", c))
end
l = l .. string.rep(" ", 3 * (16 - string.len(w)))
l = l .. " "
l = l .. string.gsub(w, "[^\x20-\x7e]", ".")
l = l .. "\n"
i = i + 16
until string.len(b) + 16 < i
io.write(l)
0950デフォルトの名無しさん
2016/07/16(土) 14:41:48.88ID:ClCwwHut0951デフォルトの名無しさん
2016/07/19(火) 21:09:20.86ID:5Ru68Qwwfunc=function()end;
と
hoge={
func=function()end
};
の違いって何ですか?
0952デフォルトの名無しさん
2016/07/19(火) 22:10:30.90ID:Uci7C8fw上
hogeというモジュールを読み込む
funcというグローバル変数に何もしない関数を代入する
下
funcという何もしない関数をもつテーブルを作成しhogeというグローバル変数に代入する
0953デフォルトの名無しさん
2016/07/19(火) 22:35:55.44ID:5Ru68Qwwfunc=function()end;
hoge={func=func};
をするって事?
0954デフォルトの名無しさん
2016/07/19(火) 22:51:15.91ID:Uci7C8fw最近のものはグローバル環境を汚すのを嫌って勝手に代入せずテーブルを返すのが推奨されているから
module=require(’modname’)
って書く
0955デフォルトの名無しさん
2016/07/19(火) 22:54:48.00ID:5Ru68Qww何となく分かった気がする
ありがとう
0956デフォルトの名無しさん
2016/08/02(火) 15:28:41.79ID:vpqNpIG1local self=BaseClass.new();
self.hoge=0;
return setmetatable( self, { __index = Class } );
でいいんでしょうか?
色々な方法が書いてあってどれをすればいいか分かりません
0957デフォルトの名無しさん
2016/08/02(火) 21:42:21.39ID:rXn2IC8I色々な方法があるから、使うフレームワークが推奨する方式に従うべき
特にそういう縛りがなければ自分で考えてみてもいいが
汎用性が高いのはJavaScriptと同じ方式だとは思う
0958デフォルトの名無しさん
2016/08/02(火) 22:00:37.77ID:qJ2YHFft一つの言語で色々やってるのは珍しいが効率は良い
0959デフォルトの名無しさん
2016/08/03(水) 08:06:53.16ID:8fjgpLNnまぁLuaだと組み込み環境ごとに全く別の言語だと思ったほうが良いんだろうけど
0960デフォルトの名無しさん
2016/08/04(木) 09:23:50.33ID:Mm46IUtm本家に書いてあるやん
0961デフォルトの名無しさん
2016/08/04(木) 20:01:15.52ID:aMt1KCpEお手本を作ってクローンさせる方式だね
一般的なクラスとインスタンス方式にこだわりがなければLuaらしいやり方だ
0962デフォルトの名無しさん
2016/08/05(金) 22:47:51.66ID:K6ts8EaKありがとうございます
もう一つあるんですが、動的に引数を指定したり複数の戻り値を返したりすることは出来ますか?
hoge(1,2,3)と通常は呼び出す物をhoge({1,2,3})と呼び出したり、
return 1,2,3;
を
return {1,2,3}
のように配列を使って動的に指定したいです
0963デフォルトの名無しさん
2016/08/05(金) 23:10:53.81ID:K6ts8EaKすみません
0964デフォルトの名無しさん
2016/08/26(金) 15:28:57.81ID:BDiBxktHの次にlua_pop(L, 1) を入れるのはなぜですか?
0965デフォルトの名無しさん
2016/08/26(金) 17:19:18.70ID:LCNVy+4GluaL_requirefはロードしたモジュールをスタックに残すから
それをスタックから取り除いている
LuaのC APIはスタックを意識する必要がある
マニュアルにある [-0, +1, e] のような箇所で説明されている
0966デフォルトの名無しさん
2016/08/28(日) 07:51:02.13ID:O603KyWmありがとうございます。
スタックから取り除いても大丈夫(モジュールは使える)ということなのでしょうか?
もしそうならスタックに積まれるのはなぜなのですか?
0967デフォルトの名無しさん
2016/08/28(日) 14:07:28.83ID:A/8rNEYuLuaの疑似コードだと
local m = require("module")
m = nil
のような動作だと考えてくれ。
moduleが何かを返すタイプならスタックに積まれた m を使うことになるだろうし
グローバル変数を追加するタイプなら取り除いても(グローバル経由で)使えるだろう。
0968デフォルトの名無しさん
2016/08/29(月) 18:22:57.78ID:9ixLGi86よく分かりました。ありがとうございました。
0969デフォルトの名無しさん
2016/09/08(木) 18:19:09.71ID:GHpvw+VU今まではメモ帳(付属のじゃないよ)だけで一つか複数のファイル開いてシコシコ書いてたんだけど、
数百から千くらいのファイル群のゲームの解析というか関数なんかの検索に、メモ帳では太刀打ちできなくて困ってます
出来たら沢山開けるメモ帳的な簡易的な物が良いんだけど、OSにインスコして、関連付けもしてくれちゃって・・・っていうのはむしろ要らない、アーカイブ展開したらすぐ使えるのがいいです
よろしくお願いします。
0970デフォルトの名無しさん
2016/09/08(木) 18:46:36.03ID:2gFs3OWYOS非依存だからwin以外でも使える
0971デフォルトの名無しさん
2016/09/08(木) 19:45:27.86ID:oP5NpzJh0972デフォルトの名無しさん
2016/09/08(木) 21:07:48.97ID:GHpvw+VU0973デフォルトの名無しさん
2016/09/09(金) 21:43:20.24ID:++lP9HIx0974デフォルトの名無しさん
2016/09/10(土) 00:03:26.44ID:mCfQwN8m0975デフォルトの名無しさん
2016/09/10(土) 01:31:15.83ID:1lwBEIiLFlashAirでPHPを実行できないかなーとか考えた
0976デフォルトの名無しさん
2016/09/10(土) 06:33:19.86ID:URrhv4S00977デフォルトの名無しさん
2016/09/10(土) 09:08:02.15ID:CKZv9HiE0978デフォルトの名無しさん
2016/09/10(土) 10:14:04.84ID:32Nzsdc+0979デフォルトの名無しさん
2016/09/10(土) 13:14:30.12ID:1lwBEIiLそうか、残念
>>978
最新モデルのW-03のみだけどLuaインタプリタを内蔵している
FlashAir Developers - APIガイド - Lua機能
ttps://flashair-developers.com/ja/documents/api/lua/
FlashAirのプログラミングにも使えるしCGIとしても使える
0980デフォルトの名無しさん
2016/09/10(土) 13:27:13.60ID:32Nzsdc+ただのPCに転送できるSDカードと思ってたわ
よくあのサイズで内臓出来たな…技術凄い
0981デフォルトの名無しさん
2016/09/10(土) 13:51:44.59ID:1lwBEIiL興味があるなら>>979のWebサイトのドキュメント→本の中にあるFlashAir Doujinshi 2を読んでみると良いよ
電子工作メイン(FlashAirのプログラミング)だけど裏話の他Luaによるプログラミング例がいくつか載っている
0982デフォルトの名無しさん
2016/09/10(土) 14:08:02.65ID:32Nzsdc+ゲームじゃないからなくてもいいだろうけど
0983デフォルトの名無しさん
2016/09/10(土) 21:52:55.71ID:URrhv4S0変数空間を共有してるから増分はコールスタック程度しかないはずだが
0984デフォルトの名無しさん
2016/09/10(土) 22:08:42.97ID:IwLF9FUl0985デフォルトの名無しさん
2016/09/10(土) 22:55:58.05ID:URrhv4S0メインスレッド = グローバル変数テーブル + コルーチン でできてる
0986デフォルトの名無しさん
2016/09/10(土) 23:32:04.82ID:IwLF9FUl糖衣構文ではなかったのか
何故かコルーチン関係がキーワードじゃなくてメソッドだし
0987デフォルトの名無しさん
2016/09/20(火) 23:56:31.17ID:8JrnwUlq>type test.lua
CLASS = {
new = function()
x = 0
return setmetatable({}, {__index = CLASS})
end,
func1 = function()
print(x)
end
}
obj = CLASS.new()
obj.func1()
この場合のxはインスタンス変数ですよね?
>luajit test.lua
0
0988デフォルトの名無しさん
2016/09/21(水) 07:08:55.54ID:8q78VamIその書き方だとグローバル変数の x を見にいってる
Luaはselfを省略できないから
{ ..., func1 = function(self) print(self.x) end }
にするか、もしくは { } の外で : を使う
function CLASS:func1() print(self.x) end
ところで次スレも同じタイトルでいいの?
LuaはともかくSquirrelは今や…
0989デフォルトの名無しさん
2016/09/21(水) 18:50:26.73ID:eYdYUvGQ0990987
2016/09/22(木) 03:54:45.83ID:Ru9TIBDmLuaのデフォルトのスコープはグローバルなんか・・・
というかこの統一性がない仕様はすっきりしないなぁ
string.to_number_ulong = function(self) ←これは意図したとおりに使える
〜
end
number.to_binary_ulong = function(self) ←これはnumberが無いと怒られて動かない
〜
end
5.1だとビット演算がないからこのような変換も手間だし
0991デフォルトの名無しさん
2016/09/22(木) 06:26:50.65ID:t8yALPnlその例から「意図」が読み取れないから何とも言えない
統一性がない仕様もなにも、自分で定義している関数に不満を漏らす意味がわからない
>>987 も CLASS = { ... } はあくまで連想配列の定義だから
連想配列要素の定義中に兄弟要素の変数を参照しないのは言語に限らず当たり前だぞ
0992デフォルトの名無しさん
2016/09/22(木) 13:55:49.27ID:62PEa5hXだからビット演算がない
同様に、連想配列とオブジェクトを統一するためオブジェクトを捨てる
でも連想配列とdoubleのどっちかを捨てるのは無理だからそこは統一性がない
0993デフォルトの名無しさん
2016/09/22(木) 14:25:23.06ID:t8yALPnlビット演算は5.3で採用されたし、doubleとintはスクリプトからは意識されない
連想配列と統一するために捨てたオブジェクトとは何のことだ?
連想配列とdoubleの統一性のなさとは何だ?メタテーブルがあり演算子の定義もできるのに
0994デフォルトの名無しさん
2016/09/22(木) 14:41:12.52ID:62PEa5hX意味がわからんから捨てる
0995987
2016/09/22(木) 14:44:50.84ID:Ru9TIBDm判りにくくてスマン。number.to_binary_ulongは定義自体が出来ないです
>type test.lua
string.to_number_ulong = function(self) --←これは定義できる
--(略)4バイトの文字列をunsigned longに変換するコード
end
number.to_binary_ulong = function(self) --←これは定義できない
--(略)unsigned longを4バイトの文字列に変換するコード
end
s = "\226\167\100\53"
print(s:to_number_ulong()) --バイナリ文字列を数字に変換(意図した動作)
n = 895789026
print(n:to_binary_ulong()) --こんな感じで使いたい。数字をバイナリ文字列に変換
>luajit test.lua
luajit: test.lua:4: attempt to index global 'number' (a nil value)
stack traceback:
test02.lua:4: in main chunk
[C]: at 0x004020e0
リファレンスマニュアルがショボいためにググってばっかりで捗らん・・・
0996デフォルトの名無しさん
2016/09/22(木) 15:27:10.87ID:62PEa5hX昔の言語にはstringの演算子がなかったからstringには関数が必要
numberにはあまり必要なかった
その影響で string.* という関数は色々あるが number.* は一個もない
0997デフォルトの名無しさん
2016/09/22(木) 15:31:44.15ID:t8yALPnlああそういう意味か
"string" は文字列型のメタ __index にも登録してあるから、それでいける
| The string library ... also sets a metatable for strings ...
"number" は初期設定では存在しないが、自分で定義して
lua_setmetatable (in C) なり debug.setmetatable (in Lua) で
数値型のメタ __index として登録すれば、やりたかった動作になるだろう
このあたりは伝統的にnumberのメソッドよりも、mathモジュールやstring.formatで賄うことが多かったから仕方ない
ホスト側の作成者の美的センスで適当に改造すべき箇所なんだろうな
0998987
2016/09/22(木) 16:31:47.44ID:Ru9TIBDmありがとう。リファレンスマニュアルにも使用例がないので
試行錯誤してこんな感じになった。まぁ動けばいいか
>type test.lua
number = {}
debug.setmetatable(0, {__index = number})
number.to_binary_ulong = function(self)
--(略)unsigned longを4バイトの文字列に変換するコード
end
n = 1684234849
print(n:to_binary_ulong())
>luajit test.lua
abcd
0999987
2016/09/22(木) 18:13:01.03ID:Ru9TIBDm>メタテーブルがあり演算子の定義もできる
を見て思うところがあったのでリファレンスマニュアルを見たけど__addくらいしか書いていなくて何を定義できるのか判らない
ググってみるとメタテーブルチュートリアル的なのが出てくるけど[]とか[]=とかの定義は出来ないっぽい?
これを定義できると配列みたいな動作をするオブジェクトの使い勝手が良くなるんだけどな
1000デフォルトの名無しさん
2016/09/22(木) 18:24:14.43ID:t8yALPnlhttp://echo.2ch.net/test/read.cgi/tech/1474536226/l50
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 1292日 3時間 13分 42秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。