DBからとってきたデータをAssociationにチャレンジ(解決編?)
associations do: と associationsDo: の違いについて、id:sumimさんからコメント頂きました。(ありがとうございます!!)
associations do: と associationsDo: は、やっていることは同じなのですが、作業内容が違います(でも得られる結果は同じです)。associations do: は、いったん辞書に associations を送って返されてきた「辞書内の全アソシエーションを要素とする配列」に do: [...] というメッセージを改めて送っています。一方でassociationsDo: は、辞書に直接 associationsDo: [...] というメッセージを送っています。段階を踏むか、一気にやってしまうかの違いとみることもできます。
なるほど。。。処理コストについても若干違うのかな?まだ、ベンチの取り方がわからないのですが、後々調べてみたいと思います。
そして、DictionaryをAssociationにする方法も、id:sumimさんからご教授頂きました。
辞書に associations を送信すると辞書を構成する全アソシエーションを要素にした配列が得られます。ひとつ前のエントリーでは、この配列に do: [...] を送ったわけですが、代わりに asOrderedCollection を送れば、順序付きコレクションに変換できます。
なるほど。Associationオブジェクトにしないといけないとばかり思っていましたが、OrderedCollectionを送るのか。。。
ということで、
データの取得を実施。
aData := result rows collect:[:each | each dataKeyedByFieldName associations asOrderedCollection].
do it して、inspectすると。。。
an OrderedCollection('productid'->21 'customerid'->3 'saledate'->1 September 2003 'quantity'->5 'employeeid'->19 'saleid'->1)
おぉーなってる×2。 なかなか奥が深い。。。
でも、あんまりこの形にする意味が。。。こういう形式はどういう場面で使うと良いのだろう???と悩んでいたところ、
umejavaさんからコメントを頂きました。
Dictionaryのまま持ち回っても全然問題ないと思いますよ(というかそのほうが普通だと思います)。あくまで違いを述べてみただけなのであまり気になさらずに。
そうですか!!自分がズレているのかと思っていましたが、良かった。でもいろいろ勉強になりました。
umejavaさん、id=sumimさんいろいろとご丁寧にありがとうございました!!
いろいろTry & ERR (ERRばっかしですが。。。)していきたいと思います。