1

それとも、これは関連していますか?

私が念頭に置いているのは、次のようにClassTagまたはTypeTag注釈を使用することです。

scala>
import scala.reflect.runtime.universe.TypeTag

def f[T : TypeTag](ls : List[T]) : String = {
  ???
}

結果:

f: [T](ls: List[T])(implicit evidence$1: reflect.runtime.universe.TypeTag[T])String

ご覧のとおりTypeTag、暗黙の引数を追加するコンパイラによって認識されます。に相当するものはありscala.metaますか? これはどのように機能し、消去の処理方法に変更はありますか?

4

1 に答える 1

1

現時点でscala.metaはランタイム イントロスペクションは提供されていませんが、将来のリリースで提供される予定です。API は に似ていますscala.reflect(ただし、scala.meta異なる点Abstract Syntax Trees、コンパイラの内部が公開されていない点など)。エンド ユーザーに大きな違いが見られないことを切に願っています。

そのため、 の機能がClassTag/TypeTagなくなることはありません。ほとんどのscala.meta場合、ブリッジ ( ) を使用して内部paradiseにアクセスします(これには が含まれます)。scalacscala.reflect

また、ブランチではscala.reflectサポートされますが、ではサポートされないことに注意してください。scala 2.xdotty

于 2016-10-11T10:37:22.510 に答える