https://gist.github.com/xuwei-k/20f6b813aa0d5452198e
コンパニオンにこういうメソッド作るの推奨されてる理由は、gistに貼ったあたりの公式ドキュメント読んでください。
もしくは以前微妙に関連するやつも書いたのでこちらもどうぞ
- これじゃダメだ
- もっといい方法ある(マクロアノテーションじゃないマクロ使う?)
などの意見お待ちしております。昔マクロアノテーションで頑張ったこともあったけど
https://github.com/xuwei-k/akka-actor-macro
IDEが対応してなかったりsbtのインクリメンタルコンパイラがダメなので、マクロアノテーションは却下(´・ω・`)
あと、微妙に関係あるようなないような話として、個人的なプラクティスとして、このActorCompanion使うか使わないかに関係なく、Actorのコンストラクタのパラメータの数を増減すると修正箇所がコンパイルエラーで気がつけなくて辛いので、そのgist中でもやっているように
「専用のパラメータ保持のためのオブジェクトを必ずコンパニオンに作って、Actor自体のコンストラクタのパラメータは1つだけにする」
という知見ができてるのですが、そのあたり他にもっといい方法あるなら知りたいですね・・・
というか、いいからはやくakka typedが入ったakka2.4を(とりあえずマイルストーンでもいいから)出して欲しい・・・
追記:
適当にtweetしたら、コミッター様からコメント頂きました。いや、まぁそうなのですけど、じゃあマクロアノテーション使わないマクロで頑張れるのか? その場合のベストプラクティス?を、誰か教えてください・・・
@xuwei_k hmm, since constructor signature is not accessible as a type, what does this gain in safety? would be nice with macro verification…
2015-04-10 03:46:27 via TweetDeck to @xuwei_k
.@rolandkuhn Yeah, here is a macros example URL but IDE have a poor support for macro annotaions. I don't want to use it
@xuwei_k that’s a bit too much (but great stuff!)?I was thinking of a simple macro to be used in the companion to ensure type safety
2015-04-10 04:35:08 via TweetDeck to @xuwei_k