Scala 在“比例匹配大小写”中使用定义的对象之前,找不到该对象
编译器抱怨: C:\Users\name\IdeaProjects\HelloWorld\src\Hell5.sc:4:12Scala 在“比例匹配大小写”中使用定义的对象之前,找不到该对象,scala,pattern-matching,Scala,Pattern Matching,编译器抱怨: C:\Users\name\IdeaProjects\HelloWorld\src\Hell5.sc:4:12 未找到: 值JsTrue case JsTrue=>“true” 我无法在json定义之前移动JsTrue的定义,因为它使用json的定义,因为您使用的是sc脚本,而不是完整的scala文件,所以会逐个计算语句。在普通的scala文件中,这只会起作用。无法重现,这与编译/运行代码的方式有关。尝试将Scala脚本*.sc替换为普通的*.Scala。好的,似乎无法在工作表中运
未找到:
值JsTrue case JsTrue=>“true”
我无法在
json
定义之前移动JsTrue
的定义,因为它使用json
的定义,因为您使用的是sc
脚本,而不是完整的scala文件,所以会逐个计算语句。在普通的scala文件中,这只会起作用。无法重现,这与编译/运行代码的方式有关。尝试将Scala脚本*.sc
替换为普通的*.Scala
。好的,似乎无法在工作表中运行,因为工作表的工作方式类似于解释器,它逐行编译代码
sealed trait Json {
def toStringT: String=
this match {
case JsTrue => "true"
case JsFalse => "false"
case JsNull => "null"
case JsString(str) => str
case JsNumber(num) => num.toString
case JsArrayEmpty => "[]"
case JsArrayT(head, tial) => s"[${head.toStringT}, ${tial.toStringT}]"
case JsObjectEmpty => "{}"
case JsObjectT(pair, tail) => s"${pair.key}: ${pair.value.toStringT} \n ${tail.toStringT}"
}
}
sealed trait JsArray extends Json
//jsarray
case object JsArrayEmpty extends JsArray
final case class JsArrayT(head:Json, tail:JsArray) extends JsArray
final case class JsString(str:String) extends Json
final case class JsNumber(num:Double) extends Json
case object JsTrue extends Json
case object JsFalse extends Json
case object JsNull extends Json
sealed trait JsObject extends Json
// jsobject
case object JsObjectEmpty extends JsObject
final case class JsPair(key:String, value:Json) {
def toStringT :String =
key + ":" + value.toStringT
}
final case class JsObjectT(pair:JsPair, tail:JsObject) extends JsObject