Как сделать строку, удалив Some из объекта в Scala? - PullRequest
0 голосов
/ 20 сентября 2019

Как сделать строку с разделенной запятой, удалив Some

case class Animal(name:Option[String], size:Option[Int]=None)

val animal = Animal(Some("apple"),Some(67))

val result = animal.productIterator.mkString(",").toString

//this gives: "Some(apple),Some(67)"

//How to get : "apple,67"

Ответы [ 2 ]

4 голосов
/ 20 сентября 2019

Решение Pritish пропускает None дела.

Например: Animal(Some("apple"),None) //returns apple,None

Так что если вас не устраивает None всписок, вы можете либо заменить его на строку или отфильтровать их:

как строка:

val result = animal.productIterator.map {
    case Some(x) => x
    case None => "[no value]"
    case x => x // only needed if you would have non optional values
  }.mkString(",") // > apple,[no value]

отфильтровать их:

val result = animal.productIterator.map {
    case Some(x) => x
    case x => x 
  }.filter{
    case None => false
    case _ => true
  }.mkString(",") // > apple
4 голосов
/ 20 сентября 2019

Попробуйте это:

val result = animal.productIterator.map {
    case Some(x) => x
    case x => x
  }.mkString(",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...