andante

2014-08-09

0809

昨晩寝る前と今日はSwiftを書いていました

https://github.com/kylef/QueryKit
そうこういうのをやりたかったのですそしてやられていた演算子オーバーロードでこういう感じにするのは考えてなかったすごいでもAttribute<T>のくだりは微妙な気がする結局自分で書かないとコンパイル時に検査してくれないんならあきらめたほうがスマートっぽいとりあえずその方向で書いていますBook.find(Book).filter("price", <, 2000)みたいになりますfindの不細工なBookは言語仕様上の不具合によるものなのでいずれなくしたい具体的にはクラスメソッドの返り値の型にSelfは指定できるんだけど[Self]やArray<Self>を指定できないことが問題でちゃんと[Book]を返すためにBookを外部から注入してやる必要があるわけです一見するとただの不具合っぽいんだけどでも型推論の理論をよく知らないからもしかすると本質的に難しい問題を孕んでいて禁止されているのかもそうだったら嫌だなとりあえずFetchRequestを実行することはできたのであとはSequenceにしてfor文で回したりsubscriptに対応したりみたいなことをがんばろうかな上のライブラリではすでに対応されているけれどただ結局本質的に遅延ロードみたいなことができるのかはよくわからないキャッシュとかもよくわからない
あとマルチスレッドでやるときに常にcontext-awareでなければならないのが厄介なので構文的に逸脱が起こらないようにして普段はコンテキストのことを忘れられるようにしたいと思っていて具体的にはクロージャの中で触るデフォルトのコンテキストをライブラリ側で指定してやる機構こうすることでperformBlock内で触るべきコンテキストを決定できるをつくりたいこちらはMagicalRecordのCoreDataStackに乗っかった形では実現できたのだけどどうもメモリ管理やキャスティングの周辺に謎の不具合があるのか僕の仕様理解が悪いのか落ちます困ったあとそのうちStackもきちんと書きたいでもそのへん一般化して書こうとすると面倒だし結局MagicalRecordのコピーになりそうなんだよねえ


身体の調子はあいかわらずよくないです今日はちょっと風邪っぽいなはー