问题描述
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
编译器抱怨:
C:\ Users \ name \ IdeaProjects \ HelloWorld \ src \ Hell5.sc:4:12
找不到:
值JsTrue大小写JsTrue =>“ true”
在JsTrue
定义之前,我无法移动json
的定义,因为它使用了json
的定义
解决方法
由于您使用的是sc
脚本而不是完整的Scala文件,因此对语句进行了逐一评估。在普通的scala文件中,它将正常工作。