Implicitな値の由来が分からん
Scalaのコードを読んでいるときに、どこから来ているか分からないimplicitな引数があって困っていた。
このことをツイートしたらアドバイスをもらえて、解決できたので備忘録的にブログに上げる。
scala の implicit 追いかけるの、metalsとかでもう少し楽にならない?ってなるけどコンテキストで変わるし難しいのかなぁ
— あずきバー (@azukibar_D) 2023年3月31日
プラグインによっては「今見えてるはずのimplicit出す」みたいなのができるっス
— @windymelt@mstdn.takuya-a.net に引っ越しました (@windymelt) 2023年3月31日
試験環境はVSCodeとMetals v1.22.0とScala2.13.10。
3行要約
- Metalsの設定をいじるとVSCode上に表示できる
- その設定は
metals.showImplicitArguments
,metals.showImplicitConversionsAndClasses
で変更できる - 実はMetalsのブログにやりかたが書いてある
詳細
ここに書いてあることが全てなので、公式ブログを見てください。
implicit args
metals.showImplicitArguments
をtrueにするとimplicitな引数が見えるようになる。
Metals v0.9.5から設定が出来る。
implicit conversions and classes
metals.showImplicitConversionsAndClasses
をtrueにするとimplicitな型変換が見えるようになる。
Metals v0.9.6から設定が出来る。
inferred type
これはimplicitな変換ではないが、型推論された結果をエディタに表示するようにできる。
metals.showInferredType
をtrueにすれば有効になる。
Metals v0.9.5から設定が出来る。
この機能だけは切っている。複雑な型パズルした結果の変数が入ると、どれが変数名でどれが実際の処理なのか分かりにくくなるから。
まとめ
implicitを追いかけるための道具をそろえた。まだ設定したばかりなので使い勝手は分からないけど今のところ満足している。 またリプライしてくれた id:Windymelt さんありがとうございました。