In meinem Scala-Code, ich habe einige implizite Konvertierung, und ich habe die notwendige Import vorhanden:Warum warnen, wenn scala.language.implicitConversions nicht der letzte Import ist?
import scala.language.implicitConversions
Aber manchmal, wenn ein anderer es Import nach diesem getan, erhalte ich die Warnung als ob der Import dort überhaupt nicht:
Warnung: (112, 18) implizites Umwandlungsverfahren pair2Dimension indem der implizite Wert scala.language.implicitConversions sichtbar aktiviert werden soll.
build.sbt:
name := "ImplicitSBT"
version := "1.0"
scalaVersion := "2.11.5"
scalacOptions ++= Seq("-deprecation","-feature")
libraryDependencies += "org.scala-lang.modules" %% "scala-swing" % "1.0.1"
Main.scala:
import scala.language.implicitConversions
import scala.swing.{Action, _}
object Main extends App {
implicit def pair2Dimension(pair: (Int, Int)): Dimension = new Dimension(pair._1, pair._2)
val dim : Dimension = (0,0)
println(dim)
}
Warum passiert das das? Wie versteckt sich import scala.swing.{Action, _}
der implicitConversions
Import?
Um es klar zu machen: Die interessante Frage ist nicht, warum die beiden kollidieren (das ist zu erwarten), aber warum nicht, wenn der Import von "scala.language" an zweiter Stelle steht. –
@Travis Ich denke, dass ein bestimmter (Ein-Name) Import Vorrang vor einem Wildcard-Import hat, der davor ausgeführt wurde. – Suma
@Suma oh, richtig, das macht Sinn. Das ist also nicht zu geheimnisvoll. –