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

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

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

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

■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
0526デフォルトの名無しさん2014/09/13(土) 14:34:10.13ID:xYGMnmOJ
LLとして利用するのにコンセンサスがいるのか?

というか規模から考えて現状でもRubyより手軽に使えるはずだし
ちょっと文法変えた程度じゃ手軽さの関係は変わらんだろう

ついでに文法だけならもっとマシな言語いくらでもあるだろ
Luaは処理系実装・実績を含めて初めて評価される類だと思う
0527デフォルトの名無しさん2014/09/13(土) 14:59:46.23ID:2mQgH8ds
localの宣言はLLじゃないな。
0528デフォルトの名無しさん2014/09/13(土) 15:33:20.77ID:y8nlksus
「LLとして使う」ってどういう文脈なんだろう?
一般業務なら Battery Included な環境のほうが便利なんじゃないか?
組み込み言語のライブラリの貧弱さは、サンドボックス内で使われるからこそ許される(し、好まれる)のでは。
0529デフォルトの名無しさん2014/09/13(土) 17:15:36.86ID:CqCzoC9O
local宣言はブロックの途中から終わりまでのスコープを作る
つまり宣言の内容より位置に意味があるから省略できない
0530デフォルトの名無しさん2014/09/13(土) 17:22:33.96ID:xYGMnmOJ
宣言した位置で意味が変わるようなコードはクソだから
配慮しなくてもいいような
0531デフォルトの名無しさん2014/09/13(土) 17:39:51.70ID:y8nlksus
>>529
Luaではlocalを省略するとグローバル変数になるから、位置以前の問題では。

>>530
C++だと変数の宣言位置によって、そのコンストラクタが走るタイミングが変わるぞ。
0532デフォルトの名無しさん2014/09/13(土) 17:40:19.61ID:CqCzoC9O
gotoは行き先の名前を考えるけど構造化プログラミングは位置を考える
これが大成功してしまったから
位置の考え方は間違ってないと思う
0533デフォルトの名無しさん2014/09/13(土) 17:58:11.94ID:xYGMnmOJ
>>531
C++でもコンストラクタが走るタイミングで結果が変わるコードは
クソに分類されると思うが

菱形継承がタブーなのを見れば明らか

>>532
構造化プログラミングで考える「位置」は
階層で十分であって「行」ではないような
0534デフォルトの名無しさん2014/09/13(土) 18:13:48.15ID:2iAULK/t
「クロージャを関数束縛とラムダに分離」ってどういう意味?
function宣言ってそもそもクロージャの作成と変数への代入のシンタックスシュガーに過ぎないんじゃなかったっけ?
0535デフォルトの名無しさん2014/09/13(土) 18:52:34.79ID:y8nlksus
>>533
コンストラクタにも実行コストがあるから、必要になるまでは遅らせるのが常識。
例えばその変数の初期化前に分岐があるような場合。
また、ロック/アンロックに RAII を使うようなイディオムは、当然ながら「コンストラクタが走るタイミングで結果が変わる」。

もちろん、Luaではコンストラクタのような自動的に実行されるコードはないから関係ないが。

あと、この文脈では菱形継承はまったく関係ない。
話がC++への批判に摩り替わっていないか?
0536デフォルトの名無しさん2014/09/13(土) 19:14:15.92ID:xYGMnmOJ
コンストラクタが走るタイミングが読めない
極端な例として菱形継承を挙げただけだよ

とりあえずここLuaと愉快な仲間たちのスレなんで
0537デフォルトの名無しさん2014/09/13(土) 19:15:15.01ID:CqCzoC9O
>>534
関係ないかもしれないけど
関数束縛が代入の構文糖である言語は
前方参照をすると失敗する場合がある
0538デフォルトの名無しさん2014/10/03(金) 07:43:15.70ID:lGjxzjS9
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ
0539デフォルトの名無しさん2014/10/11(土) 11:25:02.83ID:9ZTN9fQf
luaを知るのに既存のスクリプトをいくつかみてるんだけど
lua.eっていう拡張子のものがいくつかあって開けない
ググッてもわからないんだけどlua.eの形のものは何なんだろう
見れるエディタも教えてもらえるとありがたい
0540デフォルトの名無しさん2014/10/11(土) 11:30:28.22ID:9ZTN9fQf
スマン・・独自ソフトで暗号化されてるだけだったわ
0541デフォルトの名無しさん2014/10/12(日) 05:12:57.70ID:94OdN8X7
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >
0542sage2014/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:UZYaSt7F
for i=1,n do
05445422014/10/12(日) 14:32:29.24ID:i7kDtML/
回答ありがとうございます。 試してみたところ7行目で
'for' limit must be a number
と出ました 自分のほうでもいろいろ試してみます
回答ありがとうございました
0545デフォルトの名無しさん2014/10/12(日) 14:40:16.19ID:UZYaSt7F
BubSort(x,NUMDATA)

BubSort(x,NUM_DATA)
05465422014/10/12(日) 14:48:18.55ID:i7kDtML/
ケアレスミスごめんなさい;;
ありがとうございます、今度は八行目で
attempt to compare number with nil
で出ました、、何度もすみません 自分でも試行錯誤してみます
0547デフォルトの名無しさん2014/10/12(日) 14:59:53.88ID:UZYaSt7F
for j=n,j>i do
if(x[j-1] > x[j+1]) then

for j=n,i+1,-1 do
if(x[j-1] > x[j]) then
05485422014/10/12(日) 15:02:46.29ID:i7kDtML/
for j=n,j>i doをfor j=n,j>i,-1 do
に書き換えました
05495422014/10/12(日) 15:06:31.21ID:i7kDtML/
解決しましたありがとうございます!!
0550デフォルトの名無しさん2014/10/12(日) 20:01:27.77ID:e2Gzikyq
すんごい優しい人がいるなあw
俺が勝手に褒めておいてやるよ

ただ、プログラミング言語だけでなく日本語でも会話して欲しい
0551デフォルトの名無しさん2014/10/13(月) 01:38:05.54ID:B15n5qdA
cocos2d-xで素直にLua使うのもなんか悔しかったから
mrubyを組み込んでみた
肝心のLuaとの比較だけどLuaもrubyも素人の俺には
よくわんないっていう
ただスクリプトでのゲーム開発ってのは楽しいな
0552デフォルトの名無しさん2014/10/17(金) 23:51:55.26ID:9a/zPdtM
juliaがembedできると聞いて試してみようと思ったが、なんか面倒くさい。
プログラミング言語のくせになんでネットワークライブラリ必須なんだよ。
0553デフォルトの名無しさん2014/10/18(土) 06:17:24.91ID:0zghehpU
並列実行、数値計算が売りでFortranを比較対象にしている言語に
デフォルトでネットワーク処理を持っているのを期待するのはさすがに酷だ
0554デフォルトの名無しさん2014/10/20(月) 02:20:43.02ID:9ZZuBDyz
luajitっていつまで5.1で足踏みするんだろ
本家は5.3αまで進んだのに
0555デフォルトの名無しさん2014/10/20(月) 07:51:24.76ID:887X5tQi
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0556デフォルトの名無しさん2014/10/20(月) 14:01:39.85ID:XKh/BlSi
>>552-553
単に分散が売りの一つだからでは?
トラブってるなら環境明記するといいよ
0557デフォルトの名無しさん2014/10/20(月) 14:28:44.63ID:YmKa11RJ
juliaって面白そうだけどスレとか建ってないのかな
0558デフォルトの名無しさん2014/10/24(金) 22:05:25.23ID:LtvHolRf
Lua 5.3.0 (beta) released
0559デフォルトの名無しさん2014/10/31(金) 08:02:57.83ID:b+WwLJWx
The big features for Lua 5.3 are:
- Basic UTF-8 library
- Bitwise operators
- Integers
0560デフォルトの名無しさん2014/10/31(金) 21:03:36.77ID:tMdLNX3k
正規表現マッチャとか手が入ってない
5.2以降からすでに文字列にバイナリデータが入るからUTF8を保持できる

stringのソース斜め読みした感じだとあんまし変化ない
Windows版とかにするにはかなり手を入れないといけないね
0561デフォルトの名無しさん2014/11/02(日) 22:58:25.53ID:uPMt2D9i
>>560
手が入ったのはutf8モジュール。 例えば string.len() はバイト数だが、utf8.len() は文字数になる。
「Windows版」がutf16を指すなら、適当にエンコード変換して、別の文字列かuserdataで保持するのは簡単。
もし、内部のcharをwchar_tに変更する改造する意味なら、確かに手間がかかる。
0562デフォルトの名無しさん2014/11/02(日) 23:54:52.14ID:TF4Q/5Ab
_TCHAR「きたわよ」
0563デフォルトの名無しさん2014/11/03(月) 00:57:50.97ID:ZMCFj896
windowsのwchar_tは2byte固定じゃなかった?
という曖昧な前提で申し訳ないけど
1文字==1文字型の表現できず可変長になるから
結局sjis,utf8を扱うのと同じでメリットないんだよね
A/Wだけでなく8/DなどAPIレベルで対応しないとどうにもならないんじゃないかな
間違えてたらすまん
0564デフォルトの名無しさん2014/11/03(月) 02:05:27.09ID:7uHWyuXV
んんと、UTF-8からUTF-16の変換のコストは低く、
変換結果をGCの管理情報と関連付けてキャッシュすれば
最小限の回数になるので問題はない。
http://sourceforge.jp/projects/lua-naka/

あとはutf8というクラスやfile関係検討して
どの程度の手間が掛かるか検討だね
beta外れるまで待ったほうがいいかどうかとね。
0565デフォルトの名無しさん2014/11/03(月) 03:29:16.31ID:ZMCFj896
話が通じてないな
0566デフォルトの名無しさん2014/11/03(月) 08:35:18.03ID:7uHWyuXV
>>565

XP以降のWindowsのUNICODEは16bitの可変長。
1文字==1文字になってしまうのはそのライブラリが対応できてないだけ。
対応できてなければ、たとえばフォントの名前が文字化けするとか
変なところで不具合が発生する。
ダウンロードしたファイルの中身にどんな言語が使われているか
予想できない時代だしねえ。
0567デフォルトの名無しさん2014/11/03(月) 09:03:59.77ID:gXKeHKY3
きっちりUTF-16に対応したところで、BMP以外はろくにフォントも用意されてないから
あんまり使いどころがないんだよなぁ。
0568デフォルトの名無しさん2014/11/03(月) 09:44:26.28ID:TIQQD+z7
SquirrelならコンパイルオプションだけでWCHARに対応できるぞ!
WCHARだからマルチバイト文字だし、ダウンロードしたファイルの中身はどうしようもないのは同じだけどな!
0569デフォルトの名無しさん2014/11/03(月) 11:48:44.03ID:T6nh4Wfv
ゲーム程度なら昔の流儀でmblen とか作って
マルチバイトのまま処理するのでだいたい事足りるけど、
絵文字ニーズがでてきてしまって困ってる

サロゲートペアとかをシンプルに処理できる手頃で小さめなライブラリどっかにないかな
0570デフォルトの名無しさん2014/11/04(火) 09:05:41.39ID:bzlUuRTb
>>569
サロゲートペアってUTF-8なら、単なる「バイト数が多いマルチバイト1文字」じゃなかった?
UTF-8を適切に扱えるライブラリを探せば良いのでは?
UTF-16ベースで、1文字=1wcharで処理するものはダメだね。
0571デフォルトの名無しさん2014/11/04(火) 09:14:34.96ID:lCpWe+1k
基本内部処理はUTF-8オンリーでやって、
WINAPIまたはWINDOWSアプリに渡す場合だけ変換するってのが無難だろう。
0572デフォルトの名無しさん2014/11/04(火) 12:26:39.85ID:JSkttuhx
>>570
それが正式な仕様なんだけど、
世の中にはUTF16をべたにUTF8展開しただけ、
というファイルがあふれてて、UTF-8的に二文字になってることのが多くていかんともしがたいのん
0573デフォルトの名無しさん2014/11/04(火) 13:23:26.98ID:99dxtSJ/
というかそれはUTF-8とは言わないことになっとるw
0574デフォルトの名無しさん2014/11/04(火) 16:39:35.13ID:8lAd+EdW
そういうことになってるけど、実際使われてるのはそうだよね。たぶんだいたいJavaが悪い
0575デフォルトの名無しさん2014/11/04(火) 18:02:59.37ID:OadM+d9h
で、Luaで何がしたいの?
0576デフォルトの名無しさん2014/11/04(火) 18:40:40.27ID:lCpWe+1k
内部文字コードをUCS2にしてしまえば、
Windowsのwstringと互換だからホストから見て扱いやすいという判断でないの?
Windows用のC++のランタイムがサロゲート対応できてないわけだし。

それはそれとして
自分的にはUTF16とUTF8の変換はコストが低いと考えている。
なんでかというと、マルチバイトのアプリケーションが末尾AのAPIを呼んだ時に
カーネル側での変換の対象になっていると考えるし、
それでいて今まで問題になっていないから。
0577デフォルトの名無しさん2014/11/05(水) 07:35:22.74ID:9E/cXL42
マルチプラットフォームならUTF8やろね。
Windows氏ね
0578デフォルトの名無しさん2014/11/05(水) 14:55:13.19ID:C/jbA3HR
Windows、UTF8がデフォの文字コードになればかなり楽になりそうだな。
0579デフォルトの名無しさん2014/11/05(水) 17:30:58.35ID:5alChkxa
コンソールに関してはUTF8化も不可能ではないらしい。
ただ、既存のコマンドとかの整合性が問題。
0580デフォルトの名無しさん2014/11/05(水) 17:32:35.49ID:9E/cXL42
「楽さ」ではなく気になるのは「速さ」では?
Windows氏ね
0581デフォルトの名無しさん2014/11/05(水) 21:07:16.47ID:pM6wUNVX
>>577
特定のプラットフォームに「氏ね」言う奴がマルチプラットフォーム語るか。
0582デフォルトの名無しさん2014/11/05(水) 21:42:16.61ID:5alChkxa
WindowsユーザーはWindowsが好きで使っているわけではない。
Macユーザーは宗教で使っている。
Linux/bsdユーザーはソースコードを蹂躙するために使っている。
0583デフォルトの名無しさん2014/11/05(水) 23:18:38.50ID:hGDSCPPH
サロゲートペアなんかよりUnicode正規化の方が
よっぽど実際的な問題だと思うんだが
0584デフォルトの名無しさん2014/11/05(水) 23:28:46.45ID:5iseFbl1
濁点を分割するOSXは死んでほしいよね
0585デフォルトの名無しさん2014/11/06(木) 11:07:16.22ID:ElrQPnL2
辞書順の文字列比較さえできないlocaleの実装がクソなLinuxは死んで欲しいよね
0586デフォルトの名無しさん2014/11/06(木) 11:37:03.69ID:5j6hC+wL
サロゲートなんとか「シフトなんとかがやられたようだな・・・」
0587デフォルトの名無しさん2014/11/06(木) 12:48:03.08ID:QHCs9rG1
マルチプラットフォーム目指すと全ての環境に死ねって思うようになる悲劇
0588デフォルトの名無しさん2014/11/06(木) 16:09:06.32ID:M2Yo7uIT
つまり日本語が敗戦とともに氏ねばよかったんだよ
0589デフォルトの名無しさん2014/11/06(木) 16:14:45.84ID:pZw/zM7a
志賀直哉かよ
0590デフォルトの名無しさん2014/11/06(木) 22:56:57.44ID:Lo7NS+Dz
UTF8対応はリテラルと基本操作だけ。
ここらへんは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+Jxyj
>>590
UTF-8だからこそsinglematchでもなんとか実用になるんじゃないかな?
utf8.charpattern も一応は用意はされているし。
もちろん、string.reverseとか使えないのもあるけど。
0592デフォルトの名無しさん2014/11/07(金) 08:11:23.32ID:TOsxLUmk
欧米の2chでは、濁点だの絵文字だの
日本人は余計なことばかりしやがるよな、とかいわれてんだろうな
0593デフォルトの名無しさん2014/11/07(金) 12:46:24.98ID:s2pGHogx
濁点で余計なことしたのは外人やで
0594デフォルトの名無しさん2014/11/08(土) 17:07:11.07ID:OPiyaoeS
余計なことをする原因は八方美人
0595デフォルトの名無しさん2014/11/12(水) 00:46:15.46ID:0RjVbG4l
autotouchで画像を探してタップさせたいのですが、上にあるfindImageを使ってもうまくいかないです。
他に画像を探す方法はないでしょうか?
0596デフォルトの名無しさん2014/12/10(水) 00:35:14.86ID:If47AJ4g
LuaとかSquirrel、AngelScriptが使える環境で、boost使えない環境ってあるのかな?
0597デフォルトの名無しさん2014/12/10(水) 09:29:30.82ID:5IiOJn2a
ソフトウェア環境の問題で使えないケースは少ないだろうが
開発チームのルールの面で使わせないケースはありそうだ
0598デフォルトの名無しさん2014/12/11(木) 12:44:17.85ID:vUqbLqkU
>>597
boostが使えない環境じゃなくて、色々な都合でboost使っちゃダメな環境があるわけか…
0599デフォルトの名無しさん2014/12/15(月) 08:18:50.09ID:njR4rCHR
Lua 5.3.0 (rc0) released
0600デフォルトの名無しさん2014/12/19(金) 02:51:01.25ID:ouKpIS27
moonsharpというluaを入れてみたんですが、
c#の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
>>600
ざっと眺めてみたけど
その程度の事は同じように出来る

ただ
foo()
foo(int)
foo(string)
などのオーバーロードはどうするのかが疑問
動的に型チェックして振り分けてとかだと正直使い物にならないと思う
0602デフォルトの名無しさん2014/12/22(月) 01:19:08.37ID:D1rmXNgC
>>601
使いながらマニュアル読んで使い方が分かってきました。

オーバーロードに対応してないクラスは扱うことができませんでした。
いくつか制約があるようです。

C#のオブジェクトを簡単にluaから使えるのかと思ったら、
そう簡単にはいかないのですかね。

そういうのはラッパークラスを用意して、
MoonSharpを意識した設計しないといけないようです。

つい新しいものに手を出したけど、他のC#系のluaはどんな感じなのかしら
0603デフォルトの名無しさん2014/12/22(月) 01:19:52.78ID:D1rmXNgC
× オーバーロードに対応してないクラスは扱うことができませんでした。
オーバーロードに対応してませんでした。
0604デフォルトの名無しさん2014/12/26(金) 08:14:14.37ID:aFXoC3vZ
Lua 5.3.0 (rc2) released
0605デフォルトの名無しさん2015/01/03(土) 21:35:53.41ID:x6OMspk0
Lua 5.3.0 (rc3) released
0606デフォルトの名無しさん2015/01/03(土) 22:19:20.82ID:FqikSySO
更新内容に少しでも触れてくれると嬉しいんだけど・・・
0607デフォルトの名無しさん2015/01/03(土) 23:14:01.09ID:KF2R3l6f
RCの段階で特筆に値する更新なんてないだろ
というかあったら困る
0608デフォルトの名無しさん2015/01/04(日) 02:23:10.16ID:AdLaa9R2
5.3楽しみどすね
0609デフォルトの名無しさん2015/01/04(日) 06:44:30.95ID:FkvmMkr7
RCでの更新はコンパイル警告を無くした、とかばっかり。 安定してるんじゃないかな。
新C-APIの lua_rotate() が地味に便利。
0610デフォルトの名無しさん2015/01/04(日) 08:29:47.65ID:LjhOLja4
>>606
>>559
0611デフォルトの名無しさん2015/01/08(木) 07:02:44.50ID:HB0/eqgI
Lua 5.3.0 (rc4) released Happy New Year!
0612デフォルトの名無しさん2015/01/13(火) 08:21:09.63ID:rG5Z7jyu
Lua 5.3.0 released ? Happy New Year!
0613デフォルトの名無しさん2015/01/14(水) 08:19:11.90ID:G/8s1bPT
おめでとうございます。
0614デフォルトの名無しさん2015/01/19(月) 13:17:04.98ID:i0MAuzuq
Windows系なら JsRT でブラウザ無しの js が使えるな。 node.js でもいいけどさ。
組み込みも js で十分な気がしてきた。
0615デフォルトの名無しさん2015/01/19(月) 19:23:58.96ID:ax3bxEw/
JsRTではどうやってCからスクリプト内の変数とか操作するの?
0616デフォルトの名無しさん2015/01/19(月) 20:11:10.33ID:i0MAuzuq
node.js と比べるのはおかしいな。比べるなら v8 単体か。

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

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

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

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

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

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

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

悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
■ このスレッドは過去ログ倉庫に格納されています