Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在本例中,为什么隐式的名称似乎会影响其范围解析?_Scala_Implicit_Play Json - Fatal编程技术网

Scala 在本例中,为什么隐式的名称似乎会影响其范围解析?

Scala 在本例中,为什么隐式的名称似乎会影响其范围解析?,scala,implicit,play-json,Scala,Implicit,Play Json,我正在为java.io.File编写一个简单的JSON序列化程序,只是插入了路径: import java.io.File import play.api.libs.json._ import Implicits.File._ object Implicits { object File { implicit val format: Format[File] = new Format[File] { override def writes(o: File): JsVa

我正在为java.io.File编写一个简单的JSON序列化程序,只是插入了路径:

import java.io.File

import play.api.libs.json._
import Implicits.File._

object Implicits {
  object File {
    implicit val format: Format[File] = new Format[File] {
      override def writes(o: File): JsValue = JsString(o.toString)
      override def reads(js: JsValue): JsResult[File] = js.validate[String].map(f => new File(f))
    }
  }
}

final case class Bar(path: File) 

object Bar {
  implicit val format: Format[Bar] = Json.format
}
我发现上述方法不起作用:

No instance of play.api.libs.json.Format is available for java.io.File in the implicit scope
但是,如果我将Implicit.File.format的名称更改为Implicit.File.fmt,它就可以正常工作

在这种情况下,当名称应该是隐式范围解析器应该关心的类型Format[File]时,为什么名称会发生冲突

我正在使用play json 2.6.7

在这种情况下,当名称应该是隐式范围解析器应该关心的类型Format[File]时,为什么名称会发生冲突

因为它也关心名字


在implicit val format:format[Bar]=Json.format行中,format表示Bar.format而不是Implicits.File.format,因此Implicits.File.format不符合此规则的隐式格式。它不在伴生对象中,因此也不在第二类中。

可能是宏问题。我想这是因为Imlicit.file.format和Bar.format的名称冲突。您可以将Bar.format重命名为fix。@igorpcholkin这就是我的问题所说的。@cchantep这也是我的猜测。我打开了一个问题。我一直在使用隐式val格式。。。自从我开始编写scala以来,我的所有代码都出现了名称冲突,这是我第一次看到名称冲突。但我猜你在companion对象中也出现了这种情况,这是一条单独的规则。啊哈!好的推论。