2012-02-10 15 views
8

Scalaコンパイラによって式などで推論される型を確認するにはどうすればよいですか?複雑な型推論と暗黙の変換を持つコードがありますが、コードを読むだけでは何が起こっているのか分かりません。推測型のScala式の表示

私はbuild.sbtで

scalacOptions in Compile += "-Xprint-types" 

を追加しようとしたが、これは効果がありません。

私はたくさんの依存関係があるので、scalacを直接使うのはあまり魅力的ではありません。

私はEclipse ScalaプラグインとENSIMEを使用してコードを作成し、SBTをビルドします。

答えて

2

この正確な機能は、Eclipse Scala IDE 3.0に追加されました!

推論されたタイプを参照してください(Mac上でcmdでCtrlキーを交換する)Ctrl + Shift + W Tの任意のコードの部分を選択し、を押します。

4

それは代わりに

scalacOptions in Compile ++= Seq("-Xprint-types", "-Xprint:typer") 

する必要があります。

残念ながら、出力はあまり読みにくくありません。明示的な型なし:(

0

ホイスト非ローカルdefまたはvalに表現、 - それは割り当てられた推論されたタイプで、Eclipseのアウトラインビューに表示されます

しかし、これではありません。

0

私はこの非常に問題について質問を準備していました。私はそれをここに貼り付けるのが最も良いでしょう。これは答えではない..)。

私はRobin Greenのソリューションを試しましたが、(あなたが知っているように)それは必要以上の出力を提供します。ここで

行く:

ためのScalaの新しい、そして推論さタイプのメカニズムなので、私は多くの場合、このような何かを行うことができることは有益であろうと思う:

@spitType s= something 
... 

spitTypeは、コンパイル時に式の型情報を吐き出すコンパイル時マクロ(C++では#pragma warningに似ています)のようになります。

私は、実行時に、このような情報を取得することができるよ知っているが、残りのコードはまだコンパイルされない場合には、コンパイル時のメッセージにのみ有用なものだろう。

あなたはこのような機能が役に立ちますか、それとも単に関連性がないのでしょうか?

+1

こんにちは、この方法で見つけました。変数s.aを作成します。 'val xxx:Nothing'を入力し、タイプを知りたい式に割り当てます。 'Nothing'から型が派生しないので、常にエラーが発生します。 :) – akauppi

関連する問題