by-nameというコンパイルエラーが発生する場合がある。Startedを多少アレンジして、以下のようなコードを記述した場合。})おそらく、以前のバージョンのScalaでは正常だったのだろうが、最新2.9.1ではエラーになってしまう。これはhttps://issues.scala-lang.org/browse/SI-5000でバグとして報告されている。簡単にこれを発生させるコードは以下。Foo(Sample))とりあえず、以下のようにして回避することはできる。ProjectConfigurationソースBindingModule.scalaInjectable.scalaバイナリ非互換性scalaのバイナリ非互換性のため、コンパイル済jarとしては2.8.0用、2.8.1用、2.9.0用が用意されている。inject[Something]}などとするが、これではInjectableのメソッドはすべて公開されてしまう。injector.inject[Something]}評価このフレームワークはDIというよりもむしろサービスロケータに近い。DIはもはや無用の長物と考えているのでそれでよい。bindingModuleの受け渡しにimplicitパラメータを用いているところは非常に評価できる。オブジェクトの取得や生成には必ずこれが必要になるものの、常に明示的に受け渡すのは面倒かと思われる。その一方でシステムを構成するすべてのクラスがこのカタチになっていなければならなくなる。一つでもそうでないものがあると、チェインが断ち切られてしまう。他のDIフレームワークも同じ欠点を持つが。デフォルトを指定できるのは良いし、そこで引数指定ができるのもよいが、モックの方は引数が指定できない。injectionはできない。この違いがあると、テスト時と本番時の動作の違いが生まれてしまい、うっかりすればテストにならない可能性もある。