なんとなく思いついた Scala でのライブラリ切り替え
今日オブジェクトのシリアライズ形式を切り替える方法考えなきゃで、ぼんやりと思いついた方法。
trait DataFormat { type Format type Formatter[T] def ser[Data: Formatter](input: Data): Format def de[Data: Formatter](input: Format): Data } trait Spray extends DataFormat { import spray.json._ override type Format = JsValue override type Formatter[T] = JsonFormat[T] override def ser[Data: Formatter](input: Data): Format = input.toJson override def de[Data: Formatter](input: Format): Data = input.convertTo[Data] }
で、コンパイルしたところ
Warning:(40, 8) higher-kinded type should be enabled by making the implicit value scala.language.higherKinds visible. This can be achieved by adding the import clause 'import scala.language.higherKinds' or by setting the compiler option -language:higherKinds. See the Scala docs for value scala.language.higherKinds for a discussion why the feature should be explicitly enabled. type Formatter[T]
そーですか、警告スカ…
こんなコードばっか書いてるから IDE が不調になったりするのだ。意味は調べるけど。