Scala case Class - PullRequest
       8

Scala case Class

0 голосов
/ 27 мая 2018

enter image description here Ниже приведен фрагмент кода:

package caseClassExp

sealed trait Resources  {
  def fullpath :String
}

case class Folder (name :String ,
    path :Option[String] = None) extends Resources {
    def fullpath :String = path match {
      case Some(p) => List(p, name).mkString("/")
      case None => s"./$name"
    }
}

case class File (name :String ,
      folder :Option[Folder] = None ) extends Resources {
  def fullpath :String = folder match {
    case Some(f) => List(f.fullpath, name).mkString("/")
    case None => s"./$name"    
  }
}

object caseClass {
  def main(agrs:Array[String]):Unit = {

val resources = Seq[Resources] (
File("ex1.Scala",Some(Folder("example",Some("~/Dev"))))
Folder("temp")
Folder("bin",Some("/usr"))
File(".Clouder")
)  

resources foreach {
  case f :File => println(s"File: ${f.fullpath}")
  case f:Folder  => println(s"FOlder : ${f.fullpath}")
 }
}
}

Когда я вызываю метод File и Folder (определенный как case) в основном я получаю сообщение об ошибке, яне уверен, что я делаю не так, может кто-нибудь может помочь, пожалуйста?

1 Ответ

0 голосов
/ 27 мая 2018

Итак, ваша последовательность неверна.

Вы должны ставить запятую после каждого элемента в вашей последовательности.

val resources = Seq[Resources] (
  File("ex1.Scala",Some(Folder("example",Some("~/Dev")))),
  Folder("temp"),
  Folder("bin",Some("/usr")),
  File(".Clouder")
)

И результат:

File: ~/Dev/example/ex1.Scala
FOlder : ./temp
FOlder : /usr/bin
File: ./.Clouder

Итаквсе в порядке :) За исключением этих запятых

В вашем коде я предлагаю добавить тип к ресурсам и использовать только Seq для создания последовательности.Код будет более читабельным.

val resources: Seq[Resources] = Seq(
  File("ex1.Scala",Some(Folder("example",Some("~/Dev")))),
  Folder("temp"),
  Folder("bin",Some("/usr")),
  File(".Clouder")
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...