Play Combinators を介して JSONObject インスタンスを実際のインスタンスにマップしようとしています。デシリアライズ作業を正しく行うことができます。問題は、Option[JSONObject] で map() がどのように機能するかについてです。
オプション1:
jsonVal: Option[JSONObject] = getAsJson(input)
jsonVal.map(JSONUtil.fromJsonString(_.toString(), Blah.jsonReads))
_ が正しく解決されないため、動作しません。コンパイルに失敗します。コンパイラは、オブジェクトで toString() を見つけることができませんでした。
オプション 2:
jsonVal: Option[JSONObject] = getAsJson(input)
jsonVal.map(_.toString()).map(JSONUtil.fromJsonString(_, Blah.jsonReads))
動作します!!。関数の引数の一部として変換が行われたときに、デフォルト変数の Type が伝播されない理由を誰か教えてもらえますか?