2019年3月27日水曜日

format

 cl-dbiから返却されてきたplistapplyを使ってクラスに流しこめることはわかったのだけど、逆はどうすれば、いいんだろう……わからなくてシコシコ自分で変換する関数を書いたりしていたのだけれど。
 たとえば。

CL-USER> (setf wrk '(:|place| "A7" :|count| 3 :|day| 7))
(:|place| "A7" :|count| 3 :|day| 7)

 このplistを要素の間に「=」とかを挿入しながら「"place='A7' and count='3' and day='7'"」に変換する簡単な方法はないものか。
 調べているうちになんか、formatでできそうな気がしてきた。
 これでどうだ。

CL-USER> (format nil "~{~A='~A'~^ and ~}" wrk)
"place='A7' and count='3' and day='7'"
CL-USER> 

 うわっ、あっさりできた。
 すごすぎ。