(<:<、<% <は、=:=):<:<、<%<、=:=のScala実装はコンパイラでどのくらい正確に動作しますか?私は何をこれらの演算子尋ね関連する質問があることを今見
What do <:<, <%<, and =:= mean in Scala 2.8, and where are they documented?
しかし、私はまだ彼らの実装について困惑しているここで行います。具体的には、特定の関係を宣言する暗黙のパラメータを配置すると、自動的に適切にキャストされたかのように変数を使用できます。これはコンパイルされます:
class Foo[T](a: T) {
def splitit(implicit ev: T <:< String) = a split " "
}
これはコンパイラで実際にどのように機能しますか?これらの演算子のためのいくつかのマジックコンパイラのサポートはありますか?もしそうでなければ、この種の関係を定義から推論するための根底にあるメカニズムは何ですか? (この仕組みは、これらの演算子が動作するために特別に追加されたものであり、これらの特定の演算子にはどのように特別なものがありますか?)このような余分な暗黙的なパラメータを置くことで、コンパイラの型の解釈を何とか変更できます。
ソースhttps://github.com/scala/scala/blob/v2.9.2/src/library/scala/Predef.scala#L394 – pedrofurla