goto文を恐れなく使う兵達のスレ

このエントリーをはてなブックマークに追加
927デフォルトの名無しさん:2005/08/04(木) 07:40:33
>>921
同意。auto_ptr<>がある!とか言う香具師もいるが、何もメモリ解放だけがfinallyの役割じゃないし。
それに、newがあるのにdeleteの無いスマポはキモス...
928デフォルトの名無しさん:2005/08/04(木) 08:47:09
>>921
VCとBCCにはあるんだなこれが。
929デフォルトの名無しさん:2005/08/04(木) 12:30:42
>>928
gccにもあればとりあえず仕事で実用できるんだが。

finallyブロックをコールバックで表現するのはどうか

try_finally(try_proc, finally_proc) {
Cfinally fin(finally_proc); // デストラクトでfinally_proc実行
return try_proc();
}
930デフォルトの名無しさん:2005/08/04(木) 12:33:12
あ、ごめ。
レキシカルなクロージャないと厳しいな。
931デフォルトの名無しさん:2005/08/06(土) 15:10:34
> 何もメモリ解放だけがfinallyの役割じゃないし。
詳しく。
932デフォルトの名無しさん:2005/08/06(土) 18:30:34
FILE *fp = fopen();
try{


}
finally{
fclose(fp);
}
933デフォルトの名無しさん:2005/08/06(土) 18:34:11
まぁ↑の例はfstream使えよ!となりそうだが・・・
メモリ解放に限らず、「確実にやりたい後始末的処理」を書くのにfinallyは便利。
後始末をfinallyにしとけば、try内部では心おきなくbreakもreturnもthrowもできるので、精神衛生上非常によろしい。
934デフォルトの名無しさん:2005/08/06(土) 18:42:07
fclose(NULL);
ってどういう動作するか決まってたかな?
935デフォルトの名無しさん:2005/08/06(土) 18:46:32
はいはい。
FILE *fp;
if(fp = fopen()){
try{


}
finally{
fclose(fp);
}
}
936デフォルトの名無しさん:2005/08/06(土) 22:31:37
>>933
VC/BCCなど一部の独自拡張を使うということの方が俺にとってはよっぽど精神衛生上良くない。
937933:2005/08/06(土) 23:41:57
>>936
いや、finallyがある言語なら、精神衛生上望ましい記述ができる、というだけで、
CやC++でfinallyを使うのは、俺も精神衛生上よろしくないです。
だから、標準でfinallyを導入して欲しいぞ、と。
あとプロパティも欲しい。デリゲも欲しい。RTTIも欲しい。ガベコレは要らん。
938933:2005/08/06(土) 23:46:37
あいやぁ、RTTIは標準化されてたのね。
939デフォルトの名無しさん:2005/08/07(日) 05:54:07
longjmpを使ったtry&catchのマクロって駄目か?便利なんだが。
gotoも駄目だったら例外の処理は一体どうすればいいんだ?

そういやVCだとCでも例外処理機構が付いてるんだよな。使ってる人いる?
940デフォルトの名無しさん:2005/08/07(日) 12:31:20
>>937
(´-`)。oO(…C#…)

>>939
> そういやVCだとCでも例外処理機構が付いてるんだよな。使ってる人いる?
ちょっと上のレスぐらい読めよ。
941デフォルトの名無しさん:2005/08/07(日) 17:40:38
なんでC++はfinally実装しなかったんだ?
この件についてハゲ氏はなんか言ってる?
942デフォルトの名無しさん:2005/08/07(日) 19:31:35
java には goto がない代わりに、for とか while とかにラベルをつけて break, continue で飛ばすことができる

なぜか if にも付けられた
もしかしたらブロック単体にも付けられるかも知れない
943デフォルトの名無しさん:2005/08/07(日) 20:11:04
このスレ的にはジェームズ・ゴスリング達(javaを開発した連中)はgotoから逃げ出したチキン。
944デフォルトの名無しさん:2005/08/07(日) 20:58:34
Java3の目玉機能はgotoの実装
945デフォルトの名無しさん:2005/08/07(日) 21:20:14
java2 と java5 はあるけど、java3 ってあったっけ?
946デフォルトの名無しさん:2005/08/07(日) 21:21:52
Java5じゃなくてJ2SE5.0だろ。
947デフォルトの名無しさん:2005/08/07(日) 21:24:56
おう。もうしわけない。
948デフォルトの名無しさん:2005/08/08(月) 01:04:04
>>941
言語使用を変えなくてもライブラリで対応できる機能はライブラリで、って方針なんだろ。

あのな、finallyがあれば2〜3行で書ける処理を、わざわざクラス実装して、スマートポインタに食わせて・・・
なんてやっているほど、俺たちは暇じゃないのよ>ハゲ氏
949デフォルトの名無しさん:2005/08/08(月) 02:59:33
スマートポインタに食わせる必要は無いからお前の方がハゲ
950デフォルトの名無しさん:2005/08/08(月) 03:47:10
finally は速やかに言語仕様に加えて欲しいよ。
複数の言語に存在してるのは、
それだけ汎用性のある構文だからだし。

goto を使うのを恐れるヘタレと罵られてもいいから
今すぐに finally を追加して欲しい。
生け贄が必要なら、for か while のどちらかを殺してもいい。
951デフォルトの名無しさん:2005/08/08(月) 04:35:57
>>950
勝手に殺すな!
for も while もとってもいいやつなんだぞ。
生贄なら、お前がなれ!
952デフォルトの名無しさん:2005/08/08(月) 06:20:07
#define while(_) for(;_;)
953デフォルトの名無しさん:2005/08/08(月) 19:47:28
>>952
先生!do〜while が変なんです!
コンパイルエラーにはならないのに!
954953:2005/08/08(月) 19:48:32
あ…
955デフォルトの名無しさん:2005/08/08(月) 19:56:04
神様、生贄にwhileを差し出します、finallyを私達にお与えください。
神様、生贄にforを差し出します、多重breakを私達にお与えください。





























・・・・・・・・・ break使えないじゃん。
956デフォルトの名無しさん:2005/08/08(月) 20:01:06
whileが消え去り、forが消え去り、break, continueが使えなくなり・・・

結局 goto だけが残りましたとさ。
957デフォルトの名無しさん:2005/08/08(月) 20:03:28
if/gotoだけで事足りる品。
目先の便利さを追求して重複機能をどんどん取り入れていくと
C++やRubyのような汚い言語になってしまう。
958デフォルトの名無しさん:2005/08/08(月) 20:06:32
>>957
なんだとー、貴様!
ハゲに誤れ!
959ハゲ:2005/08/08(月) 20:13:11
灼熱の鉄板に頭を押し付けて謝れ
960デフォルトの名無しさん:2005/08/08(月) 20:51:37
チューリングマシンだけで事足りるしな。
目先の便利さを追求して重複機能をどんどん取り入れていくと
ノイマン型マシンような汚いコンピュータになってしまう。
961デフォルトの名無しさん:2005/08/09(火) 07:21:47
>>941
いちいち毎回finally書くのアホらしいから
コンストラクタで確保して、デストラクタが開放って考えだろ
ヒープだろうが、ファイルハンドルだろうがな

こっちの方が手間要らないし
後始末忘れるうっかりさんも発生しない
962デフォルトの名無しさん:2005/08/09(火) 07:23:43
ヒント:new,delete
963デフォルトの名無しさん:2005/08/09(火) 07:33:42
open();
try{
 ...
}finally{
 close();
}
をいちいちクラスに切り出すアホらしさときたら!
964デフォルトの名無しさん:2005/08/09(火) 07:49:08
一回クラスに実装すれば、二度目いらんやん
finally節を毎回コピペするようなあほらしさこそ無用
965デフォルトの名無しさん:2005/08/09(火) 08:24:13
あとさ

どうせ喪前らfinally使ったら

my_class *a = new my_class;
my_class *b = new my_class;
try {
 ...
} finally {
 delete a;
 delete b;
}

こんな感じの駄々漏れコード書くんだろ?
966デフォルトの名無しさん:2005/08/09(火) 09:54:09
>>965
あんまりスタックに物を置きたくないし
967デフォルトの名無しさん:2005/08/09(火) 09:59:00
そこじゃなくてbのnewに失敗したときにaがメモリリークするのが、
このコードの問題じゃないの?
968デフォルトの名無しさん:2005/08/09(火) 12:00:07
finallyいらんて奴素でいるのか・・・
C++使うと脳が歪むという噂は本当のようだ。
969デフォルトの名無しさん:2005/08/09(火) 13:25:46
ちょっとしたものを簡単に作りたいときならfinalyはあってもいい。
本格的なものを作るときならクラスに切り出してデストラクタに任せる。クラスにするのは面倒だけど、使うときには楽できる。

finalyはあれば便利だけどなくても困らないよ。
970デフォルトの名無しさん:2005/08/09(火) 13:32:34
>なくても困らないよ。
出た、話をうやむやにできる魔法の言葉ww
無いなりに何とかやりくりしてるなんてのはどうでもいい話だ。。
971デフォルトの名無しさん:2005/08/09(火) 13:43:20
>>970
うん。
俺は何とかやりくりしていて、それで問題ないと思うから要らない。
972デフォルトの名無しさん:2005/08/09(火) 13:51:43
直接コード入力が可能ならプログラム言語は要らないよね
973デフォルトの名無しさん:2005/08/09(火) 13:56:52
finalyはスルーするべきなのか?2箇所だぞ?
974デフォルトの名無しさん:2005/08/09(火) 14:35:44
がいしゅつ
>>751-
975デフォルトの名無しさん:2005/08/09(火) 16:27:02
>>971
じゃあお前はアセンブラだけあれば十分だな。何とかやりくりすればそれで問題ないだろ?
976デフォルトの名無しさん
969はアセンブラでやり繰りできるとは書いてないし

それよりgotoの話をしやがりませんか