Trong mã Scala của tôi, tôi có một số chuyển đổi ngầm, và tôi có nhập khẩu cần thiết hiện nay:Tại sao lại cảnh báo khi scala.language.implicitConversions không phải là lần nhập cuối cùng?
import scala.language.implicitConversions
Tuy nhiên, đôi khi có một nhập khẩu thực hiện sau khi thế này, tôi nhận được cảnh báo là nếu việc nhập khẩu là không có ở tất cả:
Cảnh báo: (112, 18) ngầm chuyển đổi phương pháp pair2Dimension nên được kích hoạt bằng cách làm cho scala.language.implicitConversions giá trị tiềm ẩn có thể nhìn thấy.
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)
}
Tại sao điều này xảy ra? Làm thế nào là import scala.swing.{Action, _}
ẩn nhập implicitConversions
?
Để được rõ ràng: câu hỏi thú vị không phải là lý do tại sao hai va chạm (đó là dự kiến), nhưng tại sao họ không khi nhập khẩu 'scala.language' đến thứ hai. –
@Travis Tôi nghĩ rằng một nhập (một tên) cụ thể đã được ưu tiên hơn việc nhập ký tự đại diện được thực hiện trước đó. – Suma
@Suma oh, đúng, có ý nghĩa. Vì vậy, điều này không quá bí ẩn chút nào. –