PostgreSQL Client for Squeakの動きがよくわからないの解決の巻。

またまた、umejavaさんにコメントを頂き解決しました!!
度々ありがとうございます。m(_ _)m

result rows collect:[:each | each dataKeyedByFieldName].
ですね。do:だと単に回すだけなのですが、collect:だとブロックの評価結果がコピーされたコレクションに入ります。

なるほど。。。

data := OrderedCollection new.
1 to: result rows size do:[:index | data add: (result rows at: index) dataKeyedByFieldName].

↑このコードが、

data := result rows collect:[:each | each dataKeyedByFieldName].

こうなるってすごいなぁーっとちょっと感動したり。。。
(他の言語でも単純にお前のコーディング能力が低いだけだろうということもあったり。。。)

smalltalkはコレクションクラスが充実しているようで、使いこなすにはしっかり覚えないと。。。

うーんとcollect:??って最初なったんですが、自由自在Squeakプログラミングにそういえば、
イテレータ関係は後述と書いてあったような。。。(^ ^;)

ということで、お勉強。

列挙子は6種類。なんとなく、その英訳の意味もつけてみるw

列挙子 英訳 簡易説明?
do: (する) コレクションのすべての要素に同じ操作を行う。
collect: (収集) do: 同様だが、処理を行って結果となるコレクションを返す。(加工用)
select: (選択) コレクションから特定の要素を取り出したい場合に使用する。
評価結果がtrueであれば結果となるコレクションを返す。
reject: (拒否) select: と反対の動き。trueのものを排除した(つまりはfalse)結果となるコレクションを返す。
detect: (検出) trueになった最初の要素を返す。
inject: into: (注入)
(〜の中へ)
次のものに対する操作の結果を蓄積する。(難しいからあんまり使わない?)

なるほど。後は、サンプルコードを書きまくる感じかな。

クエリからデータをとってくる場合は、抽出条件を絞って持ってくるからdo: とcollect: が取りあえずって感じかな?

ディクショナリ系のイテレートプロトコルはまた今度。

PostgreSQL client for Squeakの他の使い方もまとめたいけど、もう少しいろいろ学ぶとさらに見えてくると信じて、
次へいこう。