1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ] LuaやSquirrelなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合【Squirrel】 pc12.2ch.net/test/read.cgi/tech/1205208141/ ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
573 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 09:30:46 ] >>571 無限ループ防止という観点では、デバッグフックで1行実行ごとに関数呼ばせて、 その中でカウンターアップしていって、カウンターが一定の数になったらyieldとかいう手もある。はず。
574 名前:デフォルトの名無しさん [2009/12/03(木) 11:24:54 ] スクリプト側の待ちループの中でlua_yieldを呼び出すグルー関数を呼びだすようにしておき、 メッセージ処理の待ちの間、具体的には MSG *lpMes=&m_Msg; ZeroMemory( lpMes, sizeof(MSG) ); while(lpMes->message!=WM_QUIT) { if(PeekMessage(lpMes,NULL,0,0,PM_REMOVE)) { TranslateMessage(lpMes); DispatchMessage(lpMes); } else { 〜〜〜 } } の、〜〜〜の部分で1回目はlua_call、2回目以降はlua_resumeでスクリプトを呼び出せばいいような気がする。
575 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:28:06 ] >>565 他のスレッドはいきなり殺したらあかんでしょ。 メインスレッドからフラグたてて、よしなに自殺
576 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:29:49 ] てか、この辺のマルチスレッドの話ことってLua関係なくないか?
577 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:44:10 ] >>571 (before) 入力待ち(マウス等)で関数内で停止する (after) yieldを使い、外で停止する 入力が来たらresumeで関数内に戻る WM_CLOSEが来たらresumeしないまま終了
578 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 12:59:28 ] lua関係ないよな。普通にC++だけで書いてても全く同じだ。 まあ、lua (ないしは squirrel) なら、yield のタイミングで同期を とるようなコードにしておくのが無難ってのはその通りだと思われ
579 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 20:42:03 ] >>573 なるほど、それならステップ実行できますね。 >>他のレスくれた方々 具体的に書いた例だとマルチスレッドになってるけど、根本は WindowsでLua使うときにメッセージ処理をどうしてるかって話ですから。 避けて通れないだろうから、実際に組み込んでる方々はどう対処してるかが 気になったもので。
580 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 22:32:02 ] >>579 シングルスレッドモデルで組んであれば処理の流れ的に問題になるようなことは別にない あとはオブジェクトをどう管理してるかの問題。 ウインドウのインスタンスを lua 配下にしてある(生成もlua側から)なら、それぞれのウインドウの メッセージ処理部から、lua でのインスタンスの適当なメソッド (onCloseとか) をイベント的に callback させて閉じるかどうかをスクリプト側に判定させればいいだろう ウインドウのインスタンスがグローバルなら、lua 側も同様に グローバルメソッドをイベントとして呼び出して判定させるように組めばいい
581 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:14:29 ] Luaのスタックとか文法とかにいまいち馴染めないからエンゼルスクリプトをやってみようかと思ったが日本語資料がなさすぎて泣いた
582 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:28:07 ] >エンゼルスクリプト なんか可愛いな
583 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:39:34 ] つ英文マニュアル 結構読みやすいよ。 あと、WIPのtest_featureに入ってるサンプルもわかりやすい。
584 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 20:37:59 ] エンゼルスクリプトって速度どれくらい?
585 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:19:06 ] >>584 >>347
586 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:19:32 ] >>584 >>347
587 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:20:21 ] おい、結婚するか
588 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:46:45 ] そうだな。結婚すると良いよ。
589 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:49:36 ] じゃあ俺が息子になろわ
590 名前:551 mailto:sage [2009/12/04(金) 21:52:36 ] >>553 ,560 回答が遅くなってすみません。 >>560 さんの方法で望みの動作になりました。 お二方とも、本当にありがとうございました。
591 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:34:54 ] >>581 tolua++を使えばいいと思います。 ttp://lua.mine.nu/w/LuaBookSupport
592 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:36:01 ] 日本語資料が無いから辛いと書いてるのにそんなの勧めるなよw
593 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:46:07 ] Pawn何で人気ないん?
594 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:49:03 ] Luaの入門書読み終わったけどユーザーデータについてあんまし書いてなかったぜ ポインタ渡せないとオブジェクトの操作ができないジャマイカ
595 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:49:50 ] Luaの入門書ってどれのこと?
596 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:06:50 ] 入門Luaプログラミングというやつなんだけど、ちょろっと1Pくらいしか説明がなくてわかりにくかった
597 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:21:15 ] luaといえば、下の二つのスクリプトを順に実行すると、 --a.lua local v = 1 local function f() print(v) end fv = f --b.lua fv() 結果 1 感じになるんだが、関数の実体もガベコレされてるのかな? 関数内で使ってるlocal変数もコピーかリファレンスを持つことになると?
598 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:32:19 ] >>597 Luaはよく知らないが、単にグローバル変数を 2つのスクリプトで共有してるだけなんじゃね?
599 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 05:19:56 ] >>597 fv が f をつかんでいる間はつねに f のなかから v が参照可能だよ。 Lua の関数も参照されなくなればもちろんガベコレされる。 > 関数内で使ってるlocal変数もコピーかリファレンスを持つことになると? Lua ではこういう変数のことを upvalue と呼んでますが、 必要に応じてスタックからヒープへコピーされるみたい。 www.lua.org/docs.html ここにある The implementation of Lua 5.0 っていう論文に、 イラストつきで説明があります。
600 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 06:44:46 ] >>599 完全な回答をありがとう。凄くすっきりしました。 この辺の仕様はとても良くできてるなと思いますね。
601 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 07:34:58 ] closureみたいなもん?
602 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 08:39:50 ] >>601 そう。レキシカルクロージャです。
603 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 11:28:25 ] すっきりとした仕様だね。 Schemeライクというか。
604 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 12:22:26 ] squirrel だと同等のものは「Free variables」と呼ばれててこちらは対象の明示指定が必要だね
605 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:12:22 ] 未踏ユースにLua高速化が採択されているんですね。 スクリプト言語Luaの高速化と省メモリ化 (2009年度上期未踏ユース) www.ipa.go.jp/jinzai/mitou/2009/2009_1/youth/gaiyou/sk-3.html hogelog/lua (ソースコード) github.com/hogelog/lua [lua]記事一覧 - hogeなlog (開発者ブログ) d.hatena.ne.jp/hogelog/archive?word=*%5Blua%5D
606 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 15:06:08 ] >>605 エエー、あんな古臭い言語を今更高速化するのが予算つくのか。 LuaJITだってあるのに。
607 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 15:20:44 ] ヒント: 電気通信大学
608 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:15:48 ] >>606 ところがLuaJITのGCにはあんま手が入ってはいないんだ。
609 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:41:58 ] こんなんで採択されるのかよw ローカルなスクリプト言語 高速化してたら切りが無いぞ
610 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:43:19 ] 本家と連絡取らずにやってるんなら残念な結果になる可能性が高い気がする。
611 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:45:53 ] よーしじゃあパパAngelScriptを高速化しちゃうぞー
612 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:56:48 ] C言語そのままスクリプトにしたようなのってありますか?
613 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 18:10:43 ] >>612 文法のことならSquirrelとかPythonがある程度近いと思うがそのまんまってのはたぶんない
614 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 18:14:43 ] >>612 csl.sourceforge.net/csl.html
615 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 18:17:18 ] >>612 C++だけど、CINT
616 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 23:16:35 ] クロージャとコルーチンさえあればもうCでいい気がしてきた俺には十分魅力的だなぁCINTわ
617 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 08:17:06 ] CINTにクロージャとかコルーチンとかあったか?
618 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 08:25:09 ] >>616 それだったらGoのほうがいいんじゃ。
619 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 11:33:15 ] Cっぽい文法ならAngelScriptでいいじゃない
620 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 11:25:54 ] pawnとgoとgamemonkeyのスルーっぷりw
621 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 11:32:15 ] C言語みたいなプログラム書きにくい言語でスクリプト記述したいとか、どんなマゾよ?
622 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 11:34:23 ] 世の中、なにか一つ習得するとそれにしがみつくのが習性という猫もいるんだ。
623 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:37:44 ] >>621 これってたまに見かけるが、Cってそんなに書きにくいか?
624 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:49:32 ] >>623 慣れだよ
625 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:56:34 ] Cの書きにくさは、資源管理(malloc/free)がプログラマ任せであることや、 文字列操作がめんどいことにあって、構文や文法自体はそんなに書きにくくは ないよね。Cが書きにくいなら、JavaがあそこまでCを引き継いだような仕様には なってないと思う。 # でもまぁCが書きにくいと主張する人は、JavaはCから書きにくさを継承したと # 主張するか。
626 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 18:04:16 ] Cの書きにくさ ・クロージャがない ・ガベージコレクションがない ・メモリアクセス保護がない ・文字列型がない ・というかコレクション型が一切ない ・というかforeachがない ・せめてイテレータくらい付けて ・関数オブジェクトの定義が面倒(定義と関数ポインタの扱いが別) ・というかファーストオブジェクトになってない とまあ、仮にオブジェクト指向でなかったとしてもこれくらいあるわけだ。
627 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 18:06:45 ] アセンブラに比べたら格段に書きやすい
628 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 18:10:14 ] あー複雑な型の宣言や定義の構文は魔境入ってるかw
629 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 20:04:32 ] Cは40年近く前に出来た化石言語だからな。 当時のスペックのコンピュータで動かすためにキモイ仕様にしてるから書きづらくて当然。
630 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 21:35:50 ] ネイティブ系ではテンプレートの便利さに触れると、C++以外の言語を受け付けなくなるよ。
631 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 21:57:19 ] >>630 ふーん……。 D言語とかOCamlとかHaskellは触ってみたことあるの?
632 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 22:09:32 ] 臭いものに蓋をするのがITの正道 蓋をしないネイティブ系・組み込み系は邪道だな
633 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 23:16:45 ] なでしこやろうぜ!
634 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 23:20:52 ] >>632 怖いものみたさor言われるままに蓋を開けて 自分の足を撃つのがITの正道
635 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 12:43:40 ] >>630 テンプレートでほら、関数型言語っぽいプログラミングも可能になる!!! とか言われてもぶっちゃけあれキモいんだけど実際のところどうなの?
636 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 12:51:44 ] boost spiritとかboost lambdaは、使う使わないは別として、 キモいと思わない人はいないんじゃないかと。
637 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 13:51:30 ] C++をメインで使ってるけど、ぶっちゃけDirectXやライブラリの対応が いいネイティブの別言語ができたらそっちに乗り換える。
638 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 13:57:23 ] >>637 そういうのは、ラッパーライブラリひとつで解決できる話なのさー。(他言語対応) ただし動作検証用のコードは一部C++で用意しとかないといけないと思うが。
639 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 14:01:28 ] その使い勝手のいいラッパーが無いという話をしているんだろう。
640 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 15:47:16 ] boost::lambdaを使いこなしてない奴はC++を理解していない(キリッ
641 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 20:17:26 ] >>636 あれはその、なんていうかキモかわいい。
642 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:15:09 ] Brainf**kやろうぜ!
643 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:42:40 ] コンパイルにかかる時間が可愛くなさすぎる。
644 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:54:01 ] その視点で見るとGoは実に可愛らしい
645 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 05:14:24 ] Goって組み込めるの?
646 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 08:05:54 ] \ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
647 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 11:00:26 ] >>637-638 お前、なにかよさげなライブラリある度にラッパー作ってたDelphi使いの俺をなめるなよ。 さすがにもう嫌になってDelphi使ってないわ(´・ω・`) 昔は良い言語だったんだが
648 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 09:36:15 ] ああ、次はDelphi用Lua、Delphi用Squirrel、Delphi用AngelScriptだ…
649 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 02:30:59 ] ぶった斬りすいません luaでテキストから文字を読み込んで使いたいのですが、 そのあとに文字入力のために同じ関数(io.read)を使うと文字入力できなくなってしまいます。 文字読み込みのio.readと、キーボード入力のio.readの区別をつけるにはどうすればいいのでしょうか? よろしくお願いします。
650 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 02:34:20 ] >>649
651 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 05:21:19 ] テキストってテキストファイルのこと? それとも標準入力?
652 名前:>>649 mailto:sage [2009/12/12(土) 21:22:55 ] >>651 レスありがとうございます。 テキストファイルから文字を取り出してluaの配列に入れています。
653 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:27:50 ] >>504-505 これってコンパイル済み(.amx)ではなくて 普通のPawnファイル(.p)も実行出来ます?
654 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 15:13:42 ] と思ったらPawnはコンパイル済みのしか実行出来ないみたいですね スレ汚しすみません
655 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 19:25:17 ]
656 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 19:26:52 ] Luaファイルって、配布するときに隠すことできる? Cの組み込みで使おうと思っているのだけれど、Cはコンパイルすれば自動的にソースは見えなくなってくれるからおk。 けど、Luaファイルで記述した部分がもろばれになってしまうので、どうにかならないかなぁということです。
657 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 19:43:00 ] 隠すというのがコンパイル後のバイナリでOKというなら、Luaもバイナリ出力することができるよ。
658 名前:656 mailto:sage [2009/12/14(月) 20:47:13 ] まじか。 blog.dlixia.com/index.php?UID=1243877250 こんな感じなのか。 なんとなくだけど、Luaは簡単にリバースエンジニアリングできそうな予感がするな。。。 まぁ及第点はあるよね、きっと。 ありがとう!
659 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 23:07:40 ] javascriptを組み込んだらいいんじゃね? ユーザー多いし、資料多いし。 って思ったら、処理系実装が軒並みLGPLとかMPLとか・・・・
660 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 00:00:39 ] スクリプト言語から離れるが、自作のファイルアーカイブクラスでメモリにスクリプトやコンパイル後のバイナリを読み込み、 そのメモリの内容をコンパイル、もしくはバイナリ読み込みするようにすればいいと思う。
661 名前:デフォルトの名無しさん [2009/12/15(火) 00:34:42 ] >>659 CRIScriptとかはどうなんだ? BSD風ライセンスらしいが
662 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 00:35:06 ] さげわすれた・・・・
663 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 02:36:52 ] CRIScriptね。 どうなんだろ、使用感を聞いたことがない。 あれ、主開発者がApple行っちゃったけど大丈夫かな、CRIなのにww いや、すごく期待はしてるんだよ
664 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 03:14:13 ] SpiderMonkeyかな
665 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 05:28:35 ] >>652 はじめ言っていることが良くわからなかったんだけど、いまわかった。 www.lua.org/manual/5.1/manual.html#pdf-io.input When called with a file name, (略), and sets its handle as the default input file. つまりいちど io.read でファイルを読み込むとデフォルト入力ファイルが変更されるので、 それ以降は io.read では同じファイルをさらに読み込もうとするみたい。 標準入力(キーボード)から読み込みたいときは、 io.stdin:read() を使えば良いんじゃないかな?
666 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:54:38 ] あー、もう!Pawn性能いいから組み込もうとしたけど ソース汚くて処理系によってはエラー続出で修正必須、もうやだ int main(int argc, char *argv[]) { extern AMX_NATIVE_INFO console_Natives[]; extern AMX_NATIVE_INFO core_Natives[]; extern AMX_NATIVE_INFO string_Natives[]; AMX amx; cell ret = 0; if (aux_LoadProgram(&amx, "test.amx", NULL) != AMX_ERR_NONE) exit(1); if (amx_Register(&amx, console_Natives, -1)) exit(1); if (amx_Register(&amx, core_Natives, -1)) exit(1); if (amx_Register(&amx, string_Natives, -1)) exit(1); if (amx_Exec(&amx, &ret, AMX_EXEC_MAIN)) exit(1); printf("%ld\n", (long)ret); aux_FreeProgram(&amx); return 0; } 悪銭苦闘しながらもコンパイラ、amx 実行側のビルド完了まで行ったから試しに サンプルコード(examples/cards.p) をコンパイルして実行してみたけど aux_LoadProgram のところでメモリエラー起きて落ちる もうPawn意味が分からない、資料少なすぎ助けて・・・・
667 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:57:56 ] 追記 Pawn ファイルで include <###> をしていない物は正常に実行出来た
668 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:14:25 ] ドキュメントが全てpdfだったり、インストールが実行形式だったり 変なところで敷居上げてる気はするな 敷居を下げる配慮をした結果なのだろうとは思うが
669 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:47:31 ] PawnはFloat使おうとして挫折した。なんで組み込み型じゃないんだよ。。。。
670 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 14:54:37 ] スレタイにある「Squirrel」の読みはアメリカ英語で「スクワール」で、 イギリス英語だと「スクウィール」のようです。
671 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:21:23 ] Luaのライブラリを最小限のサイズにしたいのだけど 削っても動作に影響ないファイルとかあります?
672 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 16:48:46 ] >>671 パーサー部分は削った? 参考→Lua書庫内etc/noparser.c
673 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 17:42:19 ] 最近Squirrelを始めた者です。 今、C++のクラスをバインドしているんですが、分からないことになりました。 あるクラスAがあってそのクラスのインスタンスからgetB()でクラスBのインスタンスを取得できるとします。 で、そこまでは a<-A(); b<-a.getB(); とすることでbには[instance]が入っているのを確認できました。クラスBもバインド済みです。 しかし、そこからbにたいしてBのメンバを呼ぼうと思っても呼び出せません。以下がエラーです。 AN ERROR HAS OCCURED [the index 'draw' does not exist] バインドするときに戻り値が何型であるかを設定する方法があるんでしょうか?