オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net (961レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
640(1): デフォルトの名無しさん [sage] 2016/08/04(木) 19:40:49.06 ID:HlIXxJdQ(1/2) AAS
>>639639(2): デフォルトの名無しさん [sage] 2016/08/04(木) 19:27:18.45 ID:0aO0sFCL(12/13) AAS
>>638
Smalltalk と C++ との比較で? それならもちろん Smalltalk です。
(同書P.289より)
Smalltalkではiteratorを明示的に定義する必要はない。標準的なコレクションクラス(Bag、
Set、Dictionary、OrderedCollection、Stringなど)で、内部iteratorのメソッドdo:を定義してい
るからである。do:はブロック(つまり、closure)を引数としてとる。
(標準的なコレクションクラスの例になぜか名前がありませんが当然Arrayも含みます。念のため。)
それでいうと今のC++もSTLでイテレーターが実装されてるから、
必要ないって言ってるようなもんじゃね?
別にSmalltalkが特別ってことにはならない。
646(2): デフォルトの名無しさん [sage] 2016/08/04(木) 20:55:24.22 ID:HlIXxJdQ(2/2) AAS
>>643643(2): デフォルトの名無しさん [sage] 2016/08/04(木) 20:37:49.54 ID:0aO0sFCL(13/13) AAS
>>640
Smalltalkが特別ってことにはならないという点については同意します。
ただ、クロージャーを引数にとる内部イテレーターはとても簡潔な記述を可能にするので
C++がSTLを介してイテレーターが組み込みであっても、記述の負担の軽さはSmalltalk方式の方が優位かとも
とはいえ、C++のコードがどんな感じになるかははずかしながら当方ちょっと予想が付きかねますので、
もし可能でしたら、C++のSTLを使って書いてSmalltalkのと比較をさせてもらうことはできますか?
あいにくウィキペにはIteratorの例はないので、こちらの比較的シンプルなJavaの例を
外部リンク:qiita.com
Smalltalkで書いてみました
外部リンク:ideone.com
もちろんSmalltalk方式を採用した言語(たとえばRuby)なら、Smalltalkと同程度にシンプルに書くことはできます
そんなわけでRuby版も念のため
外部リンク:ideone.com
for each (range based for)でいいじゃん。
for (auto& item : collection)
{
// print an item
}
クロージャ風がいいなら、
std::for_each(collection.end(), collection.begin(), [](auto& item){ /* print */}
アイテレーターが登場するけど昔の名残みたいなもんで、
本質じゃないだろ?(範囲を指定してるだけ)
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s