プログラミング言語 L ..
[2ch|▼Menu]
512:507
07/10/27 22:31:55
>>510
スタックトップのエラーメッセージを調べたら引数が足りないというエラー
でした。マニュアルにはmath.randomの定義は以下のように書いてあったので
普通に通るもんだと思っていたんですが・・・
「引数無しで呼ばれると、math.random は [0,1) の範囲の実数の疑似乱数を
返す。数値 n を渡すと、math.random は [1,n] の範囲の整数の疑似乱数を
返す。 2つの引数 l と u を渡して呼んだときは、 math.random は [l,u]
の範囲の整数の疑似乱数を返す。」
引数を2個で渡すとエラーは出なくなったんですが、常に0が返ってきます。
引数0個だと正常に動作します。何なんでしょうね。

>>511
luaopen_mathは呼んでいます。

513:デフォルトの名無しさん
07/10/27 23:22:03
>>512
再現する最小限のソースを全て晒したら?
省略する奴に限って、省略したところに問題があるのはよくある話だから。

514:デフォルトの名無しさん
07/11/02 01:34:46
ミニマムコードを上げろー

515:デフォルトの名無しさん
07/11/02 03:54:43
このスレ的にはTJS2の組み込みってどうなの?

516:デフォルトの名無しさん
07/11/02 04:49:28
スレ違い

517:デフォルトの名無しさん
07/11/02 08:13:59
え?べつにいいんじゃないの
LLでしょTJS2って

518:デフォルトの名無しさん
07/11/02 08:19:06
pLua (Lua wrapper for FPC, Lazarus, and Delphi)
URLリンク(eonclash.com)

519:デフォルトの名無しさん
07/11/02 15:32:46
>>517
スレタイ嫁
ここはLL全般じゃなくてぅあのスレだ。

つっても過疎ってるから俺は構わないけど。

520:デフォルトの名無しさん
07/11/02 18:55:19
List[1]={"name","addr","phone"}
List[2]={"name","addr","phone"}
List[n]={"name","addr","phone"}

このような記述のList.luaがあるとして、これをrequireした後に書き出しすると、

List[4]={"name","addr","phone"}
List[1]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[2]={"name","addr","phone"}

のように、順序が崩れてしまいます。
テーブルのソートとはどのように行うのでしょうか?

521:デフォルトの名無しさん
07/11/02 19:04:32
>>520
1から始まる数値キーなら
for i,v in ipairs(List) do ... end
で回せばキーの順序はずれないと思うんだけどな。

実際ソートするならこれだけど。
table.sort(table, function(a,b) return a.x < b.x end)
みたいな。

ただこれでソートするにしても、テーブルは配列状(キーは1から始まる数値)である必要がある。

522:デフォルトの名無しさん
07/11/02 19:07:27
>>521
ありがとうございます。

現在のところ、

List[2]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[n]={"name","addr","phone"}

などのように1から始まる保証は無く、かつ数値が2, 3, 5, 6, 8, ...のように
飛び番になる可能性もあります。
実際のところ、処理上は問題は出ないのですが、
ログを取った際の可読性の問題でソート可能であればしたいのです。

523:デフォルトの名無しさん
07/11/02 19:22:39
>>522

Listとは別に、

sort_table[1]={no=5,"name","addr","phone"}
sort_table[2]={no=1,"name","addr","phone"}
sort_table[3]={no=13,"name","addr","phone"}
....

って形に詰めなおして>>521みたいにnoでソートすればおk

524:デフォルトの名無しさん
07/11/02 23:05:56
>>519
前スレ嫁。ここはLL全般のスレだ。

お前が構おうが構うまいがな。

525:デフォルトの名無しさん
07/11/02 23:27:58
>>524
お前が構おうが構うまいがここはスレタイ通りLuaのスレだ。
ここが何のスレかを知るのになぜ前スレを読む必要がある?

LL全般について議論したいのならお前がLLスレを立てればいいだけのこと。

526:デフォルトの名無しさん
07/11/02 23:45:50
>>524-525
前スレみるまでもなく>>8-11辺りでわかるんじゃ?
スレも半分超えてるのになんで今更突然……。

527:デフォルトの名無しさん
07/11/03 01:00:15
ぅあだけでもいっぱいいっぱいなのに
LL一般扱ってたらスレがいくらあっても足りないぜ

528:デフォルトの名無しさん
07/11/03 05:06:28
>>525
はいはい、新参が知ったかすんな。


>>527
何が一杯一杯なの?

つうか、お前過疎ってるから構わないって言った癖に意味不明すぎんな。

529:デフォルトの名無しさん
07/11/03 08:40:49
1年経で500レス程度だからLL全般スレでも良さげだな。
次スレ(いつになるかわからんけど)のスレタイは変えたほうが良いかもね。

530:デフォルトの名無しさん
07/11/03 08:48:29
情報が錯綜するからLuaがらみの話題だけでいいよ。
勝手に連立政権にされちゃ迷惑だ。

531:デフォルトの名無しさん
07/11/03 10:53:29
せいぜい Luaとその仲間 ぐらいかな。

LL特集になぜかLuaは入れてもらえないことが多いんだこれが

532:デフォルトの名無しさん
07/11/03 11:07:19
なんでだろう?
Webサーバとの組み合わせを指向してないからかな?

533:デフォルトの名無しさん
07/11/03 11:28:57
>>519
違う。
組み込み言語全般のスレ。
過去ログ嫁

スレタイは、前回、組み込み言語にしろって言ったのに、
Luaだけにしやがっただけで

534:デフォルトの名無しさん
07/11/03 11:35:56
「俺様はそうしろと言ったのに無視しやがって」

535:デフォルトの名無しさん
07/11/03 11:39:37
>>534
ワロタw
まさしくその通りw

536:デフォルトの名無しさん
07/11/03 11:59:15
>>534
そうですw

537:デフォルトの名無しさん
07/11/03 12:51:30
前スレでもLuaの話題なんてたいしてなかったんで、LL系の話題は全般取り扱うことになったの。
このスレ用のwikiもURLはluaだけど、LLならOKってなってるでしょ。
URLリンク(wikiwiki.jp)


「情報が錯綜する」ってバカですか。
錯綜するほど情報が出てないでしょ。
むしろ組み込み言語の情報が集まった方がいい。

>>534=535=536
そうじゃない。前スレではLL全般ということで同意がとれていていた。


538:デフォルトの名無しさん
07/11/03 12:55:10
>>537
そんなに煽りに反応しなくて良いよ。

539:デフォルトの名無しさん
07/11/03 12:56:14
前スレの終わり辺りではLL全般のスレにしようって流れだったんだけど、
なんだかんだでスレタイは変わらなかったんだよ。
前スレDAT落ちしてる上に、1年以上も前の話だから、
忘れてる人も多いだろうし、最近来た人が知らないのはしょうがない。

540:デフォルトの名無しさん
07/11/03 12:56:41
ちなみに俺は533ではない。

てか、ここ一年未満の新参が増えて、古参はluaをもう見放したのか?

541:デフォルトの名無しさん
07/11/03 13:13:34
squirrelが気になってます


542:デフォルトの名無しさん
07/11/03 15:21:49
>>540
ノシ 前スレからいます。

テンプレがあまり良くないよね。
前スレの終り頃はゴタゴタしてて急だったから立ててくれた人を責められないけど。

人も集まってるみたいだしテンプレを考えるにはいい機会かも。
できたら>11のWikiに書いておくと。

543:デフォルトの名無しさん
07/11/04 21:18:36
LL全般スレになったらlua専用スレ立てればいいだけじゃんw
民主主義は多数決で決まるんだよ、ばかがw

544:デフォルトの名無しさん
07/11/04 22:29:07
多数決も取ってないのによく言えるね、ばかがw

545:デフォルトの名無しさん
07/11/04 23:50:22
というか、たぶんLua専用する理由ってなに?
このLL全般でやってる現在でさえスローペースなんだよ? 全然意味がわからない。

546:デフォルトの名無しさん
07/11/04 23:52:22
日本語で言え俺orz

えー、Lua専用にしようという意見があるみたいなんですが、
別にレスも多いわけではないしそういった話が出る理由がわかりません。

……なんか、ごめん……。

547:デフォルトの名無しさん
07/11/05 00:06:05
Lua専用にするっていうか,別に総合スレをLuaスレにしようって言ってるわけじゃなし.
今Lua専用なんだから格別の理由がなければそのままだろ.
過疎スレは過疎スレなりに3スレまで来てるんだし
わざわざ総合にするって話が出る理由がわかりません.

548:デフォルトの名無しさん
07/11/05 00:16:03
別にLL総合スレを立てて、Luaスレが寂れて落ちるようなら
統合と言うことでいいんじゃない?
現状うまくいってるところを、わざわざ乱すこともないと思う。

549:デフォルトの名無しさん
07/11/05 00:17:56
元々スレタイはLuaだけど、内容的には総合スレ同然だと思うが。

550:デフォルトの名無しさん
07/11/05 01:23:03
そこの認識だよね。
ここが『Lua専用』だと思ってる奴って前スレとか持ち出すまでもなくこのスレ読んでないんじゃないかと。

551:デフォルトの名無しさん
07/11/05 01:34:36
687 :1:2006/03/16(木) 16:08:48
とりあえず、Wikiでも作ってみようかと思うんだが必要?

694 :デフォルトの名無しさん:2006/03/17(金) 09:57:30
このスレのWikiを作ろうかって話なんだから
看板はLuaで一応Luaの情報メインだけど
アプリ組み込み系なら多少の脱線はあり、ぐらいでいいだろ。
メジャーな言語は他所でやってくれ。

695 ::2006/03/17(金) 17:49:21
LightWeightLanguageがでかすぎるから。
やっぱ組み込み向けscriptつーことで

701 :デフォルトの名無しさん:2006/03/18(土) 21:36:56
なしてそこまでLightWeightLanguageでまとめたがるのか
明らかにLua wikiの方がわかりやすいタイトルと思うのだが

703 :デフォルトの名無しさん:2006/03/19(日) 02:18:56
このスレが、LightWeightLanguageの情報OKってなったからだろ。

LuaだけでWikiほんとに必要か?
マニュアルだけで結構十分じゃない?w

このスレの情報の出具合からいっても、
Wikiつくっても寂れるの見えてない?


↑前スレですでに総合スレにする流れになってたし、
そもそも前スレでも総合的に扱ってたはず。
このスレの最初のほうにも書いてあるし。

552:デフォルトの名無しさん
07/11/05 08:40:28
>>547-548
お前、これまでの話聴いてなかったのか?

553:デフォルトの名無しさん
07/11/05 09:30:03
>>547-548
・・・
ほんとにもう・・・乱してるのがおまえらだよ にわか

554:デフォルトの名無しさん
07/11/05 13:32:10
LuaLuaいってるやつは
上でさんざんでているsquirrelはなんだと思っているんだろう

555:デフォルトの名無しさん
07/11/05 18:26:14
これとか?
URLリンク(sourceforge.net)

検索ついでにテンプレ用にsquirrel関連を拾っておくか
The programming language Squirrel
URLリンク(www.squirrel-lang.org)
URLリンク(sourceforge.net)
SqPlus URLリンク(sourceforge.net)
Squirrel Shell URLリンク(sourceforge.net)

556:デフォルトの名無しさん
07/11/05 20:42:18
>>554
"squirrel"でこのスレを検索すれば、
lua専用スレじゃないということは、前スレを見るまでも無くあきらかだな。

557:デフォルトの名無しさん
07/11/06 01:52:37
SquirrelはLuaからの派生だからどちみちここで良いのでは。

558:デフォルトの名無しさん
07/11/06 02:00:57
別にluaからforkしたわけじゃないんで、派生とはいえない けど、
squirrelはこのスレでいいのは事実

559:デフォルトの名無しさん
07/11/10 06:44:52
次スレタイトル案
【Lua】LightWeightLanguage統合【squirrel】
【Lua】組み込み言語統合【squirrel】

560:デフォルトの名無しさん
07/11/10 07:04:42
>>243に一票

561:デフォルトの名無しさん
07/11/10 07:22:32
Squirrelの情報欲しい人の為にもスレタイにSquirrelは欲しい気がする
そうすりゃSquirrelスレが立つ心配も無さそうだしな

…ところで、次スレの話はまだ早すぎないか?
何だか、自分超元気なのに次期国王の話を聞かされる王様の気分だ

562:デフォルトの名無しさん
07/11/10 07:48:54
ぅあで喜んではしゃいでたのはやっぱりニワカか。

なんか違和感あったんだよな。

563:デフォルトの名無しさん
07/11/10 08:19:44
Squirrel重すぎ

564:デフォルトの名無しさん
07/11/10 09:02:58
ぎりぎりになって決まってなくて結局いまのまま……みたいなのは避けたい。

565:デフォルトの名無しさん
07/11/10 09:48:25
>>559
なかなかいいんじゃないかな

>>562
このスレがLuaで機能してるから他の言語くるな、なんて
質問しかしないような奴がいいそうなこったな

566:デフォルトの名無しさん
07/11/10 11:07:01
そしてPerl, Ruby, Python, PHP, JavaScriptで埋め尽くされる、と

567:デフォルトの名無しさん
07/11/10 11:51:30
566 ニワカ乙

568:デフォルトの名無しさん
07/11/10 12:28:24
守備範囲は
・アプリ組み込み用
・軽量小規模言語
・他にスレがない
あたりかな。巷のLLとはちょっと違う気がする。
LL自体定義があるのかよくわからないが。

569:デフォルトの名無しさん
07/11/10 13:11:20
>>568
ニワカ乙

570:デフォルトの名無しさん
07/11/10 13:43:20
>>568
そんなとこだろうな というか
ずっとそんなスレのつもりだった

571:デフォルトの名無しさん
07/11/10 14:09:13
LLだと、RubyやPythonも入るからな・・・
いや、組み込む話題については、歓迎かも知れんけど

572:デフォルトの名無しさん
07/11/10 14:19:33
JavaScriptも当然入るな。
PHPは組み込みあったっけ。

573:デフォルトの名無しさん
07/11/10 15:45:11
>>571
そっち系の話題は向こうのスレじゃあんま出ないしな。
いや、もちろん出してもスレ違い扱いされたりはしないだろうが。

574:デフォルトの名無しさん
07/11/10 23:40:43
>568 の箇条書きをもとに
>571-573 のニュアンスを加えて文章にしてみた。

[[
アプリケーション組み込み用の小規模言語についてのスレです。
話題の中心はLua、Squirrelですが他の言語もOK。
]]

575:デフォルトの名無しさん
07/11/10 23:46:17
1に何書こうが誰も読みゃしないのでスレタイに注意を払うべき

576:デフォルトの名無しさん
07/11/11 03:59:09
>>559
> 【Lua】組み込み言語統合【squirrel】
に一票

577:デフォルトの名無しさん
07/11/11 06:37:50
スレタイとは全然関係ないことなのですが、いくつか質問があります。
よろしくお願いします。

1,luaの実行を内部から一時停止、外部から再開する方法にcoroutine以外のやり方はありますか?
2,luaの実行を外部から一時停止&再開することはできますか?
3,フックされた関数からluaを一時停止させることはできますか?

578:577
07/11/11 07:45:09
スレタイとは関係あります
「スレタイ変更とは関係ありません」でした><

579:デフォルトの名無しさん
07/11/12 20:12:36
>>577
1、2はファイバorスレッドorプロセスが絡む話なの?
そうであればやり様はいくらでも有る。実行コンテキストを
変えずにという意味であれば他に方法は無いと思う。
3、”フックされた関数”=>”Luaから呼ばれたC言語の関数”という
意味であればlua_yieldを使うかcocoを使うか。


580:デフォルトの名無しさん
07/11/14 01:03:42
>>579
フック関数からyieldできるなんて意外でした。
ありがとうございます。

581:デフォルトの名無しさん
07/11/14 15:41:09
C側から実行されたluaプログラムを
gdbやvcのような環境でデバッグできませんか?

582:デフォルトの名無しさん
07/11/14 16:11:03
できない

だけど、Lua専用IDEからならできるよ
Decoaだっけ

583:デフォルトの名無しさん
07/11/14 23:55:43
>>581
Decodaは割合評判いいらしいね。

他に名前聞いたものとしては
VSLua(有料)
LuaEdit(無料・微妙というか未完成)

wxLuaにもビジュアルデバッガついてたような気がするけど、embed環境で動かせるかどうかは不明。

584:デフォルトの名無しさん
07/11/17 19:26:16
>>592
>>593
Decodaいいですね。組み込みで使いたかったです。
LuaEditも試してみたのですが、luaをdllにする必要があるのと、
そのdllのバージョンを合わせるのが大変で途中でやめてしまいました。
luaの自作ライブラリをdllにしてしまった方が早そうな感じです。
どもでした。

585:デフォルトの名無しさん
07/11/17 19:36:03
>>592>>593の人よろしく

586:デフォルトの名無しさん
07/11/17 21:47:01
ループの先頭に戻るという処理は、
continueでしょうか、nextでしょうか?

URLリンク(uri.sakura.ne.jp)
この辺を参考にしているのですが、breakなどしか見当たらなくて困っています。

587:デフォルトの名無しさん
07/11/17 22:15:10
>>586
何故か無い

588:デフォルトの名無しさん
07/11/17 22:32:33
continueないんだよねー
海外でもこの話題ちらほら見かけるけど。何故無いのかは知らない。

"continue" construct in Lua loops
URLリンク(lua-users.lua.org)

589:デフォルトの名無しさん
07/11/17 23:11:01
なるほど、Luaには存在しないんですね。。
レスありがとうございました。

590:デフォルトの名無しさん
07/11/18 05:35:00
新しいバージョンが出ると誰かがcontinueパッチを作ってるはず

591:デフォルトの名無しさん
07/11/18 14:31:58
continueが必要なループはイテレータのようにfunction作成してreturnしてる。
breakも必要なときは返値で判定。

592:デフォルトの名無しさん
07/11/18 15:05:18
breakはまだしも、continueをreturnで代用?
コード汚そう。

593:デフォルトの名無しさん
07/11/18 15:55:19
prototype.jsのeachのようになるからそんなでもない。


594:デフォルトの名無しさん
07/11/18 15:57:24
いちおう言っておくと「だからcontinueいらない」って話ではなく。
continueあったほうがそりゃ素直に書けるしなあ。

595:デフォルトの名無しさん
07/11/18 18:31:11
>>593
汚いじゃん

596:デフォルトの名無しさん
07/11/18 18:35:45
>>593
最悪レベルの汚さだと思う

597:デフォルトの名無しさん
07/11/20 00:10:47
Lua本(゚∀゚)コター!!
URLリンク(staff.aist.go.jp)

598:デフォルトの名無しさん
07/11/20 00:47:15
コタワァ*:.。..。.:*・゚(n‘∀‘)η゚・*:.。..。.:* ミ ☆

599:デフォルトの名無しさん
07/11/20 01:21:05
しかも今年中の予定か。
実現したら自分へのクリスマスプレゼントにする……っ!

600:デフォルトの名無しさん
07/11/20 01:26:39
なにかの死亡フラグに見えた

601:デフォルトの名無しさん
07/11/20 15:30:26
日本語解説書期待age

602:デフォルトの名無しさん
07/11/21 08:30:15
かつてPascalにもbreak、continueなくて、
まあそれでも別に困らんかったから、
改造してまで付けるほどでもないなワシは

603:デフォルトの名無しさん
07/11/21 23:13:33
SJISのソース内にリテラルを埋め込む際の文字化けについて悩んでいるのですが、
文字化けする2バイト文字の一覧のようなものってどこかに載っていないでしょうか?

604:デフォルトの名無しさん
07/11/22 00:40:33
>>603
文字化けはエスケープシーケンスのせい。
"abc"じゃなくて[[abc]]使うといい。

605:デフォルトの名無しさん
07/11/30 11:15:33
やったー 予約始まってるよー^^/

入門Luaプログラミング
URLリンク(www.amazon.co.jp)


606:デフォルトの名無しさん
07/11/30 12:58:19
一ヶ月後か
期待age

607:デフォルトの名無しさん
07/11/30 14:01:17
URLリンク(www.nicovideo.jp)

608:デフォルトの名無しさん
07/12/08 15:22:14
hoshu

609:デフォルトの名無しさん
07/12/08 16:49:38
squirrelのリファレンスマニュアルの日本語訳ページが404な件

610:デフォルトの名無しさん
07/12/08 23:14:42
Google cache からまだ一応読めるね。

そういえば以前にも一回読めなくなったときがあったけど、
そのときはサイト全体が読めなかった。

611:デフォルトの名無しさん
07/12/09 09:57:13
>>609
うあーー
ac.jpなのを忘れてた orz
保存しとけばよかった

つーか、ac.jpの人って、卒業したら消えるんだよな・・・大抵

612:デフォルトの名無しさん
07/12/09 10:09:16
9月でD論通ってるから卒業か

613:デフォルトの名無しさん
07/12/09 15:36:33
>>609
googleキャッシュかInternet archive行けばまだ間に合う


614:デフォルトの名無しさん
07/12/16 01:31:14
hoshu

615:デフォルトの名無しさん
07/12/18 17:31:29
あるlua_Stateのクローンが作りたいのですが、
グローバルステートを含めすべての内容をコピーすることは可能ですか?

616:デフォルトの名無しさん
07/12/21 01:33:58
squirrelの質問です。
スレッドで使って下の関数をコールするとsuspendでC++側に処理を返したときに
a、bのデータが壊れてしまいます。

function CallSuspend(i, j, k, l, m, n, o)
{
local a = 23;
local b = 32;

while(1)
{
suspend();
print("i = " + i + "\n");
print("j = " + j + "\n");
print("k = " + k + "\n");
print("l = " + l + "\n");
print("a = " + a + "\n");
print("b = " + b + "\n");
break;
}

}


617:616
07/12/21 01:40:57
どうやらsq_call関数で関数実行後にスタックをポップしている部分でデータが壊れているようです。
suspendはwakeupでまたスクリプトを起動するのだから、引数の数だけポップする意味がわかりません。
これはバグなのでしょうか?
ちなみに自分の使っているsquirrelのバージョンは2.1.1です。


SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror)
{
    SQObjectPtr res;
    if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){
        v->Pop(params);//pop closure and args ←※ここ
        if(retval){
            v->Push(res); return SQ_OK;
        }
        return SQ_OK;
    }
    else {
        v->Pop(params);
        return SQ_ERROR;
    }
    if(!v->_suspended)
        v->Pop(params);
    return sq_throwerror(v,_SC("call failed"));
}




618:デフォルトの名無しさん
07/12/21 10:05:07
いきなりソース覗きこんでバグだバグだ騒ぐ前にまずはちゃんとマニュアルを読めよ…

619:デフォルトの名無しさん
07/12/21 10:54:35
>>618
どういうことですか?
知っていることがあるなら教えてください。お願いします。

620:デフォルトの名無しさん
07/12/21 11:04:12
リファレンスのsq_callの説明にはこう書いてありました。

>この関数はすべての引数をpopし、スタック上のこのクロージャを取り除く。
>もしretvalがtrueであるなら、クロージャの戻り値がpush される。
>もし関数実行がsq_suspendvmによって中断されたなら、クロージャと引数はスタックから自動的にpopされない。

しかし、自分が実際に追ってみた限りではsuspendでsq_callを抜けた後に引数をポップする処理は実行されています。
それがlocal a,bを破壊しているようなのです。


621:デフォルトの名無しさん
07/12/21 22:08:56
バグじゃないっつーの
とりあえずなにがしたいのか書こうよ
「これはバグですか?」じゃ作者に失礼すぎるぞ
てめーを卑下しまくる前にちょっとは他人のことを考えようよ

622:デフォルトの名無しさん
07/12/21 22:20:18
>>621
616の関数を実行して無事に終了したいだけです。
suspendで処理がC++に帰った後、sq_wakeupvmでスクリプトを再実行したらstackからlocal a,bが消えていて
printでnullを参照してしまうという問題を解決したいんです。


623:デフォルトの名無しさん
07/12/21 22:29:42
>>621
ここは作者の掲示板ではないが、
現象が再現するミニマムコードを掲載して、仕様と挙動が異なっている点を報告したうえで、
それがバグかどうかを質問する、ってのは別に失礼でも何でもないと思うけどな。

624:デフォルトの名無しさん
07/12/21 23:39:26
>>623
これは現象が再現しない断片コードだし、仕様を取り違えてるし
そもそも一定の条件を満たしていると自分では思えるというだけで
相手に失礼ではないなんてまたどこまで自分勝手な理屈だよ
常識的に考えておかしいだろ

625:デフォルトの名無しさん
07/12/21 23:46:38
>>624
>>616は現象が再現しない、って試したの?
あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな

626:デフォルトの名無しさん
07/12/21 23:47:13
>>624
もったいぶらないで教えてやれよ。
無駄レスが多すぎる。

627:デフォルトの名無しさん
07/12/21 23:55:38
>>626
残念ながら2chとはそういう場所なのです。

628:デフォルトの名無しさん
07/12/21 23:59:24
とりあえずSquirrelユーザーがキモいというのはわかった
この際原点に戻ろうじゃないか

入門Luaプログラミング
URLリンク(www.amazon.co.jp)

629:デフォルトの名無しさん
07/12/22 00:07:36
仕様取り違えてると分かってるのなら、ここをこう取り違えてるよーって言ってやればいいだけなんじゃないの?
そんな、作者に失礼とか自分勝手とか卑下しまくってるとか言わんでも…

ちなみに俺はよく分からんけど、>>616の動作は期待に反している感じはする。仕様は知らない。

630:デフォルトの名無しさん
07/12/22 00:10:01
>>625
断片だから試せない
>あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな
俺作者だよ
当然のことながらsquirrelのじゃないけどね
作ってるものが馬鹿からバグ呼ばわりされたときどんな気持ちになるかは分かってるつもり

631:デフォルトの名無しさん
07/12/22 00:55:43
>>630
試してないのなら「再現しない」などと断定するなよ。

>>617の箇所のコードを書いた人間の身になって考えると、確かに
一部のコードを載せられて「これはバグか?」と言われるのは
面白いものではないだろうし反論したいことも沢山あるだろうが、

質問に対する回答は一切無く、その感情に任せて馬鹿とか自分勝手とかてめー呼ばわり
するだけってのは作者であろうがなかろうが人間性を疑ってしまう。

632:デフォルトの名無しさん
07/12/22 01:22:15
とりあえず問題がおこる「呼び出し側のコード」を書こうぜ>623
そうしないと使い方がおかしいかどうかすらわからん。

予想:引数の数を間違えてる

633:デフォルトの名無しさん
07/12/22 02:02:25
引数の数間違えたら、実行する前に落ちるんじゃないか?

634:デフォルトの名無しさん
07/12/22 02:15:54
引数の数が違ってると関数呼ばれないね

635:デフォルトの名無しさん
07/12/22 02:20:35
とりあえず>>632がsquirrel使ってないってのはわかった

636:デフォルトの名無しさん
07/12/22 02:26:24
>>631
断片で不完全なものは試せるはずがない試せないものは再現するはずがない
再現するかどうか観察しなくても断片で動かないんだから再現するはずない
事実を述べてるにすぎないよ

>質問に対する回答は一切無く
ちょっとずつリードしてあげてるじゃん
すぐに解決策が示されるとでも思ったか?俺の人間性が疑われようが甘えはゆるさん

637:デフォルトの名無しさん
07/12/22 02:58:27
>>636
甘えを許そうが許しまいがお前さんの勝手だが、それをスレ住人に強要するなよ

レス数はとても少ないがここは色んな人間が見てる
自分のポリシーを他人に強要したり、それを守れない人間を罵倒したいのなら自分の掲示板でやれ



638:デフォルトの名無しさん
07/12/22 03:22:11
squirrelよく知らないけど616を参考にしてやってみた

function CallSuspend1(i, j, k, l, m, n, o)
{
  local a = 10;
  local b = 20;
  print("Enter CallSuspend1\n");
  while (1) {
    suspend("abc");
    print("i = " + i + "\n");
    print("j = " + j + "\n");
    print("k = " + k + "\n");
    print("l = " + l + "\n");
    print("a = " + a + "\n");
    print("b = " + b + "\n");
    break;
  }
  print("Leave CallSuspend1\n");
  return "done.";
}

local co = newthread(CallSuspend1);
print("Call CallSuspend1\n");
local ret = co.call(1,2,3,4,5,6,7);
print("ret = " + ret + "\n");
print("Wakeup CallSuspend1\n");
ret = co.wakeup();
print("ret = " + ret + "\n");


639:638
07/12/22 03:23:12
結果

Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = (null : 0x00000000)
b = (null : 0x00000000)
Leave CallSuspend1
ret = done.


640:638
07/12/22 03:36:38
617 の ※ここ の部分を
if (!v->_suspended) v->Pop(params);
に変更して同じコードを実行すると

Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = 10
b = 20
Leave CallSuspend1
ret = done.



641:デフォルトの名無しさん
07/12/22 03:46:14
>>638
ありがとう!
やっぱり他の人がやってもそうなるんですかー
638さんはスクリプトから実行しているようですが、
自分はC++から呼び出して実行してました。

>>640
自分も同じ方法で対処するしかないのかなと思ってました。
これって結局仕様なんですか?


642:638
07/12/22 03:48:05
call と違う順番で wakeup してみる

function CallSuspend2(i, j, k, l, m) {
  local a = 10;
  local b = 20;
  print("Enter CallSuspend2\n");
  while (1) {
    suspend("abc");
    print("i = " + i + "\n");
    print("j = " + j + "\n");
    print("k = " + k + "\n");
    print("l = " + l + "\n");
    print("m = " + m + "\n");
    print("a = " + a + "\n");
    print("b = " + b + "\n");
    break;
  }
  print("Leave CallSuspend2\n");
  return "done.";
}
local co1 = newthread(CallSuspend2);
local co2 = newthread(CallSuspend2);
local co3 = newthread(CallSuspend2);
print("Call CallSuspend2\n");
co1.call(1,2,3,4,5);
co2.call(10,20,30,40,50);
co3.call(100,200,300,400,500);
co2.wakeup();
co1.wakeup();
co3.wakeup();


643:638
07/12/22 03:49:23
結果

Call CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
i = 10
j = 20
k = 30
l = 40
m = 50
a = 10
b = 20
Leave CallSuspend2
i = 1
j = 2
k = 3
l = 4
m = 5
a = 10
b = 20
Leave CallSuspend2
i = 100
j = 200
k = 300
l = 400
m = 500
a = 10
b = 20
Leave CallSuspend2


644:641
07/12/22 03:49:29
あ、それと今さらなんですが>>616のコードでwhileしてるのって意味ないんですよね
いろいろ試してる過程の残骸ですので無視して下さい

645:638
07/12/22 04:05:19
sq_call が sq_throwerror を呼び出す前に
if (!v->_suspended) v->Pop(params);
でsuspendしているときはスタックを整えていないことから考えるとバグかも


646:デフォルトの名無しさん
07/12/22 04:06:59
>>644
Squirrel全然分からん(昔Hello World試したくらい) けど、勉強がてら俺も>>616試したら同じ結果になった。

ちなみに引数の数を 7つから変更(呼び出し元も変更)していくと、
3つになったところでbが正常になり、2つになるとaもbも正常になった。

これが仕様だとすると何か根本的根本的に使い方間違ってんのかな?
sq_call とか sq_wakeupvm とかの引数とか色々変えてみたけど、勉強がてらなんでまだよく分からん。
整理できたら多少空気読みつつ晒してみる

647:デフォルトの名無しさん
07/12/22 04:08:59
>>630で吹いた。ギャグだとしたら高度だ。

648:デフォルトの名無しさん
07/12/22 04:10:37
>>645
あまりバグバグ言うとまた五月蝿くなるからやめとけ

649:632
07/12/22 04:13:48
すまん、ばりばりつかってるんだが適当ぶっこいたんだ。

おわびにってことで俺もしらべてたんだが、既に638 で結論でてた…

function test(i,j,k,l,m) {
local a = 10;
local b = 20;
for (a=0;a<10;a++) {
suspend();
print("a=" + a + "\n");
print("b=" + b + "\n");
}
print("done");
}

a <- newthread(test);
a.call(1,2,3,4,5);
while (a.getstatus() == "suspended") {
a.wakeup();
}

こんなかんじのコードで簡単に再現できる。test の引数の数を減らすと
ローカル変数が破壊されなくて止まらなくなるので、sq_call での引数の解放でローカル変数を
破壊してるという、641の推測は正しいと思う。どういった修正が適切かは断言できないけど、
バグなのは間違いないので、本家に報告したほうがよさそう。

自分の手元でこの種のスレッドの suspend を使ったコードはいたるところにあるんだが
なんでいままでトラブルなかったんだろう、とおもってコードを見直したら、
パラメータは bindenv したオブジェクトのメンバ経由で渡してて、引数を全くつかってなかったよ^^;

650:デフォルトの名無しさん
07/12/22 04:15:59
>>646
まさにまさに!

自分もまさか4つ以上引数を渡すのはダメとかそういう仕様じゃないよな?
でもこんなイージーなバグがあるわけないよな?

てな具合にずっと悩んでたんです!

651:デフォルトの名無しさん
07/12/22 04:26:04
>>649-650
だからバグだバグだと騒ぐなと

652:デフォルトの名無しさん
07/12/22 04:42:00
君もこんな過疎地でオタ共を統率して悦に入ってないでニュー速だかvipだかにでもお行きなさいよ

653:デフォルトの名無しさん
07/12/22 04:47:46
あー読んでてやっと分かった。
スタック上にローカル変数があろうが無かろうが、suspend時点でのスタック変数を引数の数だけ問答無用で開放してしまうのか。
なんで>>646みたいに現象は引数の数に変化を受けると。

で、単に使い方が悪いのかバグなのかは不明だけど、
squirrelのコードを>>640の通りに変更すれば少なくとも、この問題は解決、と。

654:649
07/12/22 04:56:40
とりあえず下手な英語だが本家にバグとして報告しといたよ。たぶんそのうち適切な対策とってくれるだろう。

655:デフォルトの名無しさん
07/12/22 05:08:02
ほげげ氏・・・w
ところどころ動詞やらが可笑しいけど伝わるな
Unknown table ってのは内部用のローカル変数のテーブルか何かなのかね?

他のスレも見てみたけど本家のフォーラムって意外と閲覧数少ないんだな・・・

656:デフォルトの名無しさん
07/12/22 09:53:25
squirrelは別のとこでやれよ

657:デフォルトの名無しさん
07/12/22 10:28:10
Luaの本はまだなのか。

658:デフォルトの名無しさん
07/12/22 11:48:48
>>656
前スレ&現行スレ嫁

659:デフォルトの名無しさん
07/12/22 15:55:02
次スレから >>1 嫁にできるよう頼む

660:デフォルトの名無しさん
07/12/22 23:29:26
作者対応速いな
URLリンク(squirrel-lang.org)

661:デフォルトの名無しさん
07/12/23 00:00:33
相変わらず閲覧数少ねえーーw

結論としてはやっぱりバグで、修正方法は>>640の通りだったと。
発見された>>616氏、本家に報告されたほげげ氏、その他検証された方々乙でした。



662:デフォルトの名無しさん
07/12/23 00:03:02
>>660
報告乙

663:デフォルトの名無しさん
07/12/23 00:05:59
>>661
621のこと忘れてるぞ
椰子の煽りがなければ住人もここまで迅速に動かなかっただろう

664:デフォルトの名無しさん
07/12/23 00:09:11
自演乙

665:デフォルトの名無しさん
07/12/24 03:36:26
Lua本もう出てたんだ。ProgrammingInLua持ってるけど買う意義あるかな。

666:デフォルトの名無しさん
07/12/24 06:09:14
おおほんとだ出てるな
A5、256ページで\2310ってちょっと高くないかな、、、こんなもんか
買った人レビュー希望

667:デフォルトの名無しさん
07/12/24 07:01:02
>>666
値段はまあ普通だろうね
マイナー言語の一種だし・・・
Erlang入門なんて同じ値段で200ページしかない。
ともかく日本語で出たことが快挙


668:デフォルトの名無しさん
07/12/24 11:33:56
>>666
入門書としてはこれくらいの長さのほうがとっつきやすいかも。
Lua触るの初めてでしたが、読みやすくて、なかなかよかったです。

奥付みてみたら、2008年1月3日初版第一刷発行とか書いてあってワラタ


669:デフォルトの名無しさん
07/12/24 11:47:05
雑誌の「発行日」の記載って、なぜみんな
実際の発売日よりも1ヶ月くらい未来の日付になっているのでしょうか?
URLリンク(q.hatena.ne.jp)

670:デフォルトの名無しさん
07/12/25 00:55:20
Lua本届いたー
第一部が基本文法。標準ライブラリとか。さくっと読める
第二部がアルゴリズム実装しながらその他機能。結構いろいろ詰まってる。
第三部がC言語との連携その他。

入門ならこの厚さがちょうど手頃でいいかも。

671:デフォルトの名無しさん
07/12/25 01:17:43
入門だけか。
実際に使い出して結構経つ俺には、どのぐらい役に立つのかなぁ。

672:デフォルトの名無しさん
07/12/25 05:18:46
>>670
第三部ってどの程度ページある?
ここがある程度詳しく書かれているなら買ってみてもいいかなあ

673:デフォルトの名無しさん
07/12/25 13:28:19
>>672
第三部の内訳
第9章 Luaを拡張してみる - 13
第10章 Luaのモダンな機能 - 15
第11章 C言語との連携 - 13
第12章 Luaの組込み - 10

674:デフォルトの名無しさん
07/12/25 14:21:04
>>673
詳しい情報さんきゅ
帰ったら注文するわ

675:デフォルトの名無しさん
07/12/31 01:59:29
Squirrelの日本語リファレンス復活しとる

676:デフォルトの名無しさん
07/12/31 02:29:49
結構前から復活してる
というより見られなくなってたのはほんの短期間だった

floatのスペルミスはどうにかならないかなあ

677:デフォルトの名無しさん
07/12/31 02:33:56
いや、落ちて戻って繰り返してるし、またいつなくなるか
分からんから、見たかった人は今のうちに見ておくのが良いかと。

678:デフォルトの名無しさん
07/12/31 02:40:16
そうなのか。
保存しとこう。

679:デフォルトの名無しさん
07/12/31 07:40:09
サーバー落ちてただけのようですね。
でもac.jpですから、今のうちということですな

680:デフォルトの名無しさん
07/12/31 15:23:23
あれ、博士課程を修了したからHPも消えた、って話じゃなかった?
かなり長い間見れなかったような気がするんだが。
まあどっちだっていいんだけど。

681:デフォルトの名無しさん
08/01/01 00:52:15
ぅあけましておめでとう!

682:デフォルトの名無しさん
08/01/02 02:20:12
ぅあけおめ!

683:デフォルトの名無しさん
08/01/02 02:40:09
あけおめ!
今年も、組み込み言語が流行るといいな!

684:デフォルトの名無しさん
08/01/09 20:52:06
asdfasfasdfasdfasdf

685:デフォルトの名無しさん
08/01/10 09:07:06
>Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
>test.cpp:
>Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>Error: 外部シンボル '_luaL_newstate' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>Error: 外部シンボル '_luaL_loadfile' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>(以下略)

こんな感じでリンクできないんですがどうしたらいいですか。
パスは通ってると思うんです。lua 5.1.2です。

686:デフォルトの名無しさん
08/01/10 10:45:48
>>685
勘だけどextern "C" かな。src/lua.hの代わりにetc/lua.hppを使ってみるとか。

687:685
08/01/10 16:12:22
extern "C"は使ってるんですけどねえ。うーむ

688:デフォルトの名無しさん
08/01/10 21:31:19
再現するコードを貼りたまえ。

689:685
08/01/10 21:46:05
#include <stdio.h>

extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}

main(){
double z;
lua_State *L = lua_open();
lua_dofile(L, "add.lua");
}



690:685
08/01/10 21:47:08
testなのでこれだけなんです。


691:デフォルトの名無しさん
08/01/10 21:49:42
Borlandの場合は命名規則と呼び出し規約が違うからではないかと。
VCでコンパイルされたライブラリをリンクするときに良くある問題。
詳しくはぐぐればわかると思う。細かいことは忘れた。


692:デフォルトの名無しさん
08/01/10 22:00:54
ライブラリはちゃんと設定してる?

693:デフォルトの名無しさん
08/01/10 22:09:06
ライブラリをリンクしてないとか

694:デフォルトの名無しさん
08/01/10 22:28:07
lua_dofileって5.1.2になくね?

695:デフォルトの名無しさん
08/01/10 22:39:24
ないよ。
lua_dofileでぐぐれば代替コードが見つかる。

696:デフォルトの名無しさん
08/01/10 22:46:01
685はなんでリンクまでは行ったの?

697:685
08/01/11 01:32:18
そうなんですよ。コンパイルは通ってるように見えるんでincludeは多分見てる。
普段はbccでは簡単なものしか作ってないしライブラリやリンク設定は自信ないですが。
ヘルプ見て作業フォルダにbcc32.cfg,ilink.cfgを作り
-L"libraryパス";"パス"
-I"includeパス"
などとやりました。頭をわざと--Lとやったら
>エラー E2075: コンフィグレーションファイル中の オプションの間違い : --LD:\〜略
とエラーになるので読んでるとは思うんですが。
685ではもう5個くらいlua_関数があって全部おなじようなエラーです。
lua_dofileはぐぐりました。
685にあるようにヘッダ読んで_luaL_loadfileまではいくようです。
lua_openも_luaL_newstateに置き換わってる。
バイナリエディタでLuaLib.libをのぞくと2つとも文字列は見つかるようです。
そこからは俺の実力ではどうにも。

691でしょか。

698:685
08/01/11 01:35:45
訂正 ilink32.cfgです
すんません


699:デフォルトの名無しさん
08/01/11 03:24:27
そう思うんだったら、luaのライブラリもbccで作ればいんじゃね?

700:デフォルトの名無しさん
08/01/11 05:23:44
まさか、VCのlibをBCCでリンクしようとしてないよな?

701:デフォルトの名無しさん
08/01/11 06:57:05
自分でBCC使ってビルドしてないのかよ。
そりゃ無理にきまっとる

702:デフォルトの名無しさん
08/01/11 07:41:10
とりあえずわかったのは、いいやつが多い

703:デフォルトの名無しさん
08/01/11 08:17:26
しょうがないからBCCでLuaをビルドする一番簡単な方法をおしえてやろう。後は適当にやりなさい。

D:\lua-5.1.2\src>rename luac.c luac.c_
D:\lua-5.1.2\src>bcc32 -I. -D_isatty=isatty *.c
(略)
D:\lua-5.1.2\src>rename *.exe lua.exe
D:\lua-5.1.2\src>lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
>

704:685
08/01/11 09:01:59
なるほどいろいろ勉強になります。互換じゃないんですかこういうのは。出直してきます

705:デフォルトの名無しさん
08/01/12 13:59:52
xxx.luaとxxx/table.luaから成り立つライブラリがあって、
--xxx.lua
require "xxx"
module("xxx",package.seeall)
function xxx_func()
 table.insert(......

--xxx/table.lua
require "xxx"
module("xxx.table",package.seeall)
xxx_func()

--main.lua
require "xxx.table"

を実行するとxxx.luaのtable.insertがnilになってる。理由はxxx.table
のモジュールで"insert"を探しに行ってしまっている為。
問題はxxx.luaだけで使うと問題が起きずxxx/table.lua経由で
使用すると問題が起きるという事だけど、この問題の本質って
なんだろう?xxx.”table” 見たいな標準ライブラリと同じ名前の
モジュールを作成したこと?

706:デフォルトの名無しさん
08/01/12 16:19:01
>>705
moduleはxxx.luaの環境を自身のモジュールのテーブルに変更する(この場合_G.xxx)。
つまりtable.insertはxxx.table.insertになる。
moduleにpackage.seeallを指定するとxxx.tableが存在しなかった場合に_G.tableを見に行くようになる。
回避策としてはtable.insertを_G.table.insertにすればいいと思うよ。
めんどくさかったらxxx.luaの先頭で
local table=table

それはそうと、そのコードだと外からxxx_funcを使いたい時にxxx.xxx_funcって書く必要があって不便じゃないか?

707:705
08/01/12 16:43:02
>>706
>local table=table
まさにそれをやってとりあえず回避してます。
ただそうなると後からの拡張に備えるならばxxxで呼び出している
_Gの全てのメンバに対してそれをやらないと安全でない事に。
そうなるとpackage.seeallの役割って・・・。


708:デフォルトの名無しさん
08/01/13 00:27:18
>そうなるとpackage.seeallの役割って・・・。
ただの手抜き道具。
安全云々なら

local _G = _G
module("xxx")

でオシマーイ。

709:デフォルトの名無しさん
08/01/14 10:57:54
Squirrel に関数内で使える静的変数ってないのでしょうか?
今は仕方なくグローバルに置いてるのですが。

710:デフォルトの名無しさん
08/01/14 13:40:53
Squirrel 知らんけど、もしクロージャがあればどうにかなるのでは。
Lua だとこんな。
> f = (function ()
local v = 0
return function ()
v = v + 1
return v
end
end)()
> print(v)
nil
> print(f())
1
> print(f())
2
> print(f())
3
> print(v)
nil


711:デフォルトの名無しさん
08/01/14 14:19:30
>>709
URLリンク(muffin.cias.osakafu-u.ac.jp)

ここに静的変数について説明があるけど、これじゃ駄目なのか?

712:デフォルトの名無しさん
08/01/14 15:47:49
レスありがとうございます。

>>710
真似てみて以下のようなコードを書きましたが、
実行時しても、111が出力されました。
function func()
{
v <- 0;
return function() {
return ++v;
}();
}
print(func());
print(func());
print(func());

>>711
クラスのメンバ変数でしか使えなく、さらに書き換えが無理なので、使い勝手が悪そうです。

713:デフォルトの名無しさん
08/01/14 16:12:55
同じくLuaしか知らんからマニュアル見ながら勘で答えるけど
{ local v = 0; function count() { return ++v; }}
こんな感じのことがしたいのかな。Luaなら
do local v = 0; function count() v = v + 1; return v; end; end

714:デフォルトの名無しさん
08/01/14 16:14:01
質問から少し話はそれるけど、
インスタンスを作成すると、そのクラスのスロットの追加変更が効かなくなるってのは
仕様として分かるんだが、静的メンバまで変更不可になるのはどうにかしてしてほしい。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5045日前に更新/210 KB
担当:undef