【Lua】組み込み系言語総合 その4【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/03/30(水) 01:00:58.93使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■前スレ
【Lua】組み込み系言語総合 その3【Squirrel】
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/
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
0375デフォルトの名無しさん
2011/07/03(日) 13:25:20.95レスサンクス。ごめん書き方間違えた…。
tableの中にインスタンスが入ってた場合どうすればいいかな?
obj = {X = 1}
t = setmetatable( obj , { __index = setmetatable( { EX1 } , { __index = { EX2 } } ) )
って感じになってた場合、Ex2のメソッドが実行されたとき、
Ex2の第一引数がEx1になってしまってobjの値を参照できないんだが。
0376デフォルトの名無しさん
2011/07/03(日) 14:09:50.560377デフォルトの名無しさん
2011/07/03(日) 14:15:50.44EX2={X=3,ex2=function(self) print("EX2:" .. self.X) end}
EX1={X=2,ex1=function(self) print("EX1:" .. self.X) end}
obj={X=1,obj=function(self) print("obj:" .. self.X) end}
setmetatable(obj , { __index = setmetatable( EX1, { __index=EX2 } ) } )
obj:obj() --> obj:1
obj:ex1() --> obj:1
obj:ex2() --> obj:1
EX2={X=3,ex2=function(self) print("EX2:" .. self.X) end}
EX1={X=2,ex1=function(self) print("EX1:" .. self.X) end}
obj={obj=function(self) print("obj:" .. self.X) end}
setmetatable(obj , { __index = setmetatable( EX1, { __index=EX2 } ) } )
obj:obj() --> obj:2
obj:ex1() --> obj:2
obj:ex2() --> obj:2
特に問題ないようだけど?
0378デフォルトの名無しさん
2011/07/03(日) 15:13:16.840379デフォルトの名無しさん
2011/07/03(日) 15:21:24.660380デフォルトの名無しさん
2011/07/03(日) 19:03:20.36色々更新されてるね
空文が地味に嬉しい
0381デフォルトの名無しさん
2011/07/03(日) 20:56:05.97RAII/Disposeキタコレと思ったら、tableにメタメソッド
__gcがつかえますよか・・。残念。
0382デフォルトの名無しさん
2011/07/03(日) 22:48:15.59サンクス。
>>376の方法でできたわ。意外にor文って便利なんだな。
>>377でできたみたいなら自分のやつどこか間違ってんのかな。
まぁ>>376のやつがわかりやすいからこっちでやるよ。
0383デフォルトの名無しさん
2011/07/03(日) 22:50:05.580384デフォルトの名無しさん
2011/07/03(日) 23:45:02.89もっと恥ずかしい名前にするべきだった
0385デフォルトの名無しさん
2011/07/04(月) 00:02:39.730386デフォルトの名無しさん
2011/07/04(月) 07:51:53.75〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0387デフォルトの名無しさん
2011/07/04(月) 18:34:45.39いちおう言っとくけどその変数がブーリアンの場合はorだけじゃできないよ
0388デフォルトの名無しさん
2011/07/04(月) 18:44:17.790389デフォルトの名無しさん
2011/07/04(月) 20:58:42.52つ luaL_checkint
0390デフォルトの名無しさん
2011/07/04(月) 21:23:28.56もともとリストとかセットとか操作演算子とか用意しといてくれよ。
重複排除がしにくくてしゃーない。
0391デフォルトの名無しさん
2011/07/04(月) 22:46:14.52どこの一神教だよ
0392デフォルトの名無しさん
2011/07/04(月) 22:49:06.790393デフォルトの名無しさん
2011/07/04(月) 22:51:21.120394天使 ◆uL5esZLBSE
2011/07/06(水) 13:42:06.10∨∨∨∨∨∨∨∨∨∨
「「「「「「「「「「「 lua_tointeger()だとtrueが0になる仕様をどうにかしてほしい... 」」」」」」」」」」」(キリ!!!ッッ!!!
∧∧∧∧∧∧∧∧∧(キリッッ!キリッッ!!!きリッッッッ!キリッッ!!!!きリッッ!!!
きも
0395デフォルトの名無しさん
2011/07/07(木) 13:26:45.42できるだけ単純に書けて、単純な出力をするスクリプト言語を作った。
定義ファイル代わり+シーケンスも多少は書けるってとこ。
興味があったらどうぞ。
ttp://kushi.lv9.org/teco/index.html
元々は2Dゲームのエフェクトアニメ記述用で、スプライトの設定とか、アニメパターンの制御に使ってたもの。
多少は汎用性が欲しいなと思ってたらこんな感じになった。
0396見習いちょっと休憩中
2011/07/07(木) 19:00:28.98実体はアセンブラに組み込むP-codeに近いですか?よく知らないですけど。
VMのソース付きだからコンパイル言語で使うには自由がききそうですね。
0397デフォルトの名無しさん
2011/07/07(木) 19:12:01.510398デフォルトの名無しさん
2011/07/07(木) 21:09:36.40何処から本体DL出来るのかと探し回った挙句
ソースからやっとURL見つけた
なんでこんなところにと思ったが
どうやらIEなら普通に表示されてるようだ
0399デフォルトの名無しさん
2011/07/07(木) 22:52:44.86obj.keyでインスタンスの値を返してobj.key(Arg)でメソッドを実行するという風にしたいのですが、
setmetatable({key1 = function(Arg) … end, -- メソッド
key2 = function(Arg) … end,
…… ……},
{__index = function(self,key) -- インスタンス
if key == key1 then
……
return result
elseif key == key2 then
……
return result
…………
end})
今は上のようにメソッドのテーブルにメタテーブルでインスタンスを返す関数をくっつけて実装しているのですが、
メタテーブルをなくしてメソッドとインスタンスを一つのテーブルにまとめて
すっきりさせたいと思ったのですがそういうことはできないでしょうか?
obj.keyで帰ってきた関数を()で評価するところを、obj.keyで関数を評価して値を返すところまでやりたいということです。
0400デフォルトの名無しさん
2011/07/07(木) 23:17:24.42つーかそんなコストかけて分かりにくくするなんてことしないほうがいい
スクリプトは簡潔に小さくが基本
0401デフォルトの名無しさん
2011/07/08(金) 00:05:16.09get_a(){return a++;}
みたいのか
嫌過ぎるw
0402デフォルトの名無しさん
2011/07/08(金) 06:49:39.21get()ってメソッド書くより直接インスタンス受け取ったほうが
使う側でわかりやすいと思ったんですが、やっぱり複雑すぎますね。
やめておきます。
0403395
2011/07/09(土) 02:10:52.48>>396
P-code って初めて聞いたけど、似たようなものだと思うよ。独自のVM用命令って意味で。
出力バイナリを簡単に、詳細を明確にしておけば、いじりやすいかと思った。
コンパイラのソースも公開予定だけど、これはもうちょい先になる。プライベートな事情で。
>>398
HTMLのチェックしたらひどいことになってたわ。
修正しておいた。報告ありがとう。
0404デフォルトの名無しさん
2011/07/09(土) 08:08:17.87( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0405デフォルトの名無しさん
2011/07/09(土) 10:35:52.590406デフォルトの名無しさん
2011/07/09(土) 12:25:15.950407399
2011/07/09(土) 17:48:58.34メタテーブルの設定をする関数を作ろうと思っているのですが、
setmetatable({},{__index = setmetatable({},{__index = setmetatable({} …
とメタテーブルの__indexの値がテーブルなら、さらにメタテーブルを付けて入れ子にできますが、
setmetatable({},{__index = function …
と__indexの値を関数にした場合はそのメタテーブルにさらにメタテーブルを付けたりして
入れ子にすることはできないのでしょうか?
0408デフォルトの名無しさん
2011/07/09(土) 18:22:50.30setmetatable(t, {
__index = function(self,k)
return mt.__index and mt.__index(self,k) or nil
end})
0409デフォルトの名無しさん
2011/07/09(土) 18:31:11.100410デフォルトの名無しさん
2011/07/09(土) 22:08:36.28local truthy_false = {}
function truthy(x) return x==false and truthy_false or x end
function falsy(x) if x==truthy_false then return false else return x end end
return falsy( truthy(EX1[k]) or EX2[k] )
0412デフォルトの名無しさん
2011/07/10(日) 00:04:46.61基底に垂れ流すだけなら
inherit_mt[k] = base_mt[k]
で参照してあげるだけなので
rideして何をするか次第じゃないかな
0413デフォルトの名無しさん
2011/07/10(日) 00:44:27.700414デフォルトの名無しさん
2011/07/10(日) 01:58:26.32クラスベースの継承を使いたいなら、クロージャでクラス実装したライブラリ探すとか?
0415デフォルトの名無しさん
2011/07/10(日) 02:01:47.220416395
2011/07/10(日) 02:17:52.79それを保証するのは難しいね。好きで続けられる分にはいいんだけど。
もし飽きたら重荷を背負い続けることになるし、放棄したら無責任と思われそう。
俺自身がこれを使い続けるのが、動機的にもモチベ的にも一番いい手だろうなぁ。
ちょいと調べてみたが、LuaもPythonも意外と歴史があるんだね。
Lua 18歳
Python 20歳
Squirrel 8歳
0417デフォルトの名無しさん
2011/07/10(日) 06:39:10.12君がLuaに向いてないんだと
0418デフォルトの名無しさん
2011/07/10(日) 07:03:34.78javascriptみたいで簡単じゃん
0419デフォルトの名無しさん
2011/07/10(日) 07:46:27.83ルアにはメタテーブルの問題があるからよけいに継承しにくい
そして厄介なことにクラスの実現方法が何パターンもある
結局のところ基底クラスをソースコードレベルでよく読んで
それから派生クラスのファクトリを書かなければならない
カプセル化や抽象化の概念に喧嘩売ってる
継承に向いてる言語だなんて考えるほうがオカシイ
0420デフォルトの名無しさん
2011/07/10(日) 09:47:48.35クラスの実現方法が何パターンもあるのは事実であって意見ではない
意見を喧嘩させることはできるが事実は喧嘩しない
0421デフォルトの名無しさん
2011/07/10(日) 09:51:17.40意味不明
0422デフォルトの名無しさん
2011/07/10(日) 10:15:05.570423デフォルトの名無しさん
2011/07/10(日) 10:20:34.520424デフォルトの名無しさん
2011/07/10(日) 10:51:32.42喧嘩じゃなく選択の問題だろう。
0425デフォルトの名無しさん
2011/07/10(日) 14:14:14.230426デフォルトの名無しさん
2011/07/11(月) 00:38:50.74チェック機構は組めるけど
そんなところで型チェックとか本末転倒だろ?
要するにだな
もっと開発が活発になるようSquirrel使って下さいお願いします
0427デフォルトの名無しさん
2011/07/11(月) 02:11:45.05それはフォントやエディタの色分けに問題があるってだけでLuaと関係なくね?
0428デフォルトの名無しさん
2011/07/11(月) 03:01:06.410429デフォルトの名無しさん
2011/07/11(月) 07:11:11.68慣れればどーってこと無いさ。
0430デフォルトの名無しさん
2011/07/11(月) 08:23:23.12どちらを使うのが正しいのかは見ただけでは分からない
コーディング規約で縛るとかで対策してる?
0431デフォルトの名無しさん
2011/07/11(月) 08:34:43.52local x = 0
local set = function(a) x = a end
local get = function() return x end
return { set = set, get = get }
end
local obj = create()
obj.set(10)
print(obj.get())
これで統一するのが一番分かりやすいし安全
0432デフォルトの名無しさん
2011/07/11(月) 09:35:08.06/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0433デフォルトの名無しさん
2011/07/11(月) 22:54:42.330434デフォルトの名無しさん
2011/07/11(月) 23:01:55.700435デフォルトの名無しさん
2011/07/12(火) 07:48:31.56Luaにしとけばよかった。
0436デフォルトの名無しさん
2011/07/12(火) 08:55:51.830437デフォルトの名無しさん
2011/07/12(火) 09:21:30.450438デフォルトの名無しさん
2011/07/12(火) 10:57:54.81Pythonあたりを組み込むよりかなり手間が少ない。
0439デフォルトの名無しさん
2011/07/12(火) 11:26:26.75用途に応じてベストの物を使うのがおりこうさんだ
0440デフォルトの名無しさん
2011/07/12(火) 23:32:37.910441デフォルトの名無しさん
2011/07/13(水) 08:31:14.48バインド系(sqbind, SqPlus, Squadd, Sqrqt)が軒並み更新とまってるじゃん…
そんなに人気ないの?
つーか今注目のバインダってないのん?age
0442>>441
2011/07/13(水) 09:17:39.14↓
http://squirrel-lang.org/forums/default.aspx?g=posts&m=4561
0443>>441
2011/07/13(水) 09:28:01.02http://squirrel-lang.org/forums/default.aspx?g=posts&m=4184
0444デフォルトの名無しさん
2011/07/13(水) 21:54:38.45AngelScript|Д`)ジー
0445デフォルトの名無しさん
2011/07/13(水) 23:38:16.63AngelScript好きだなおいw
0446デフォルトの名無しさん
2011/07/14(木) 07:57:29.00( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0447デフォルトの名無しさん
2011/07/14(木) 14:45:55.850448デフォルトの名無しさん
2011/07/14(木) 17:27:30.870449デフォルトの名無しさん
2011/07/14(木) 21:48:35.67結構使いやすいと思うんだけどなぁ。
>>447
SquirrelがUTF16、AngelScriptがUTF8に対応してるんだっけか?
0450デフォルトの名無しさん
2011/07/15(金) 04:23:11.68え?そうなの?
0451デフォルトの名無しさん
2011/07/15(金) 07:36:11.45というか対応って何?
所詮文字列も配列の一種じゃん。
0452デフォルトの名無しさん
2011/07/15(金) 11:22:25.510453デフォルトの名無しさん
2011/07/15(金) 12:35:46.40ttp://blog.livedoor.jp/ractis5m/archives/51567803.html
SJISを使いたい場合は [[ ]] で
くくるとエスケープシーケンス無効リテラルになるので、ダメ文字問題もおきない。
""でもSJISが使いたい場合はソースにパッチが必要になるが。
0454デフォルトの名無しさん
2011/07/15(金) 14:47:47.230455デフォルトの名無しさん
2011/07/15(金) 19:41:29.44かっこわるい
0456デフォルトの名無しさん
2011/07/15(金) 19:43:09.050457デフォルトの名無しさん
2011/07/15(金) 19:43:51.810458デフォルトの名無しさん
2011/07/15(金) 22:09:31.08LuaInterfaceとNuaってのがある
0459デフォルトの名無しさん
2011/07/16(土) 01:51:44.64http://www.lua.org/work/
ただしLuaJIT2.0は5.1のままいくらしい(一部は5.2から取り込み)。
世の中、5.1/5.2/LuaJIT2.0対応のライブラリばかりでいて欲しい。
0460デフォルトの名無しさん
2011/07/16(土) 07:24:24.54どこの翻訳機使ってるんだよ
0461デフォルトの名無しさん
2011/07/16(土) 08:01:14.49print([[ハロワ]])
みたいな代替手段を使ったり、ソース弄ったりコンパイルし直したりせずに
print("ハロワ")
でSJISに代表されるような文字コードでも化けずに表示できるようにならんかなって事だろ?
0462デフォルトの名無しさん
2011/07/16(土) 08:56:50.750463デフォルトの名無しさん
2011/07/16(土) 11:47:49.690464デフォルトの名無しさん
2011/07/16(土) 11:54:32.460465デフォルトの名無しさん
2011/07/16(土) 18:01:32.280466デフォルトの名無しさん
2011/07/16(土) 19:10:58.120467デフォルトの名無しさん
2011/07/16(土) 23:02:38.71サンクスコ。
0468デフォルトの名無しさん
2011/07/16(土) 23:05:44.860469デフォルトの名無しさん
2011/07/17(日) 01:25:45.43http://www.falconpl.org/
http://en.wikipedia.org/wiki/Falcon_(programming_language)
□ Dao
http://www.daovm.net/
http://en.wikipedia.org/wiki/User:Phoolimin/Dao_(programming_language)
使ってる人います?
0470デフォルトの名無しさん
2011/07/17(日) 01:59:07.87http://d.hatena.ne.jp/ohtorii/20110716/1310783800
LLVMでC++interpreterが動くみたいだね
プログラムに組み込めるようにならんかな
0471デフォルトの名無しさん
2011/07/17(日) 02:05:07.42repl の無い言語は組み込み言語としては魅力を感じないな
0472デフォルトの名無しさん
2011/07/17(日) 09:25:56.99\ ヽ ) ) \\ \\
( \ \∩___∩ \\
\ \ ⌒⌒| ノ ヽ \\
\ \ / ● ● ト、\ \\\
\ Y | ( _●_) ミ\ \\\
\ / 彡、_ |∪| ノ \ \\\
(____)―ヽノ' ヽ  ̄ ̄ ヽ\\
\, j l l .l }
Lua! l (_ノノノノ
0473デフォルトの名無しさん
2011/07/17(日) 10:43:52.15┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
0474デフォルトの名無しさん
2011/07/17(日) 10:46:02.74■ このスレッドは過去ログ倉庫に格納されています