DBからとってきたデータをAssociationにチャレンジ(失敗)
今データベースからかえってきた値はOrderedCollection(順序付き集合)の中にDictionary(連想配列)に入っているんですが、
umejavaさんのコメントで、(度々、ありがとうございます。)
Associationですが、単なるキーと値のペアですね。OrderedCollectionなどに入れると順番が保持されます。Dictionaryの場合は順序は保証されないです。
ということを頂き、このままでは、問題なのかと思い、順番を保持して欲しいので、Associationで入れるようにただいま検討中。
aData := result rows collect:[:each | Transcript cr; show: each dataKeyedByFieldName].
をdo itしてTranscriptをみてみると、
a Dictionary('customerid'->3 'employeeid'->19 'productid'->21 'quantity'->5 'saledate'->1 September 2003 'saleid'->1 )
のような感じで表示されます。
(OrderedCollectionの中にDictionaryが入っている。)
で、 Associationにしたいので、
aData := result rows collect:[:each | each dataKeyedByFieldName associationsDo:[:assoc| Transcript cr; show: assoc]].
をdo itしてTranscriptをみてみると、
'productid'->21 'customerid'->3 'saledate'->1 September 2003 'quantity'->5 'employeeid'->19 'saleid'->1
と表示される。
(OrderedCollectionの中にDictionaryをAssociationとして表示できている?)
と思って、aDataをinspectすると、OrderedCollectionの中はDictionary(前と同じ)になっている。。。
処理というか、smalltalk的な考えかたというかどうしたらいいかという組み立てができていないなぁーと感じています。
さて、どうしたらいいものか。。。OrderedCollectionの中はAssociationにする。
頂いたコメントから一回処理した結果(OrderedCollectionの中はDictionary)を再度Associationオブジェクトに入れるようにするとかだと意味ないような。。。
(そもそも、PostgreSQL client for Squeakを拡張しないといけない?)
asAssociation的なものがあるのかな?(systemBrowserで検索かけた限りみつからなかったんですが。。。)