2016-04-01 28 views
0

Seçenek [String] bir listeye nasıl dönüştürülür [String]?Scala'da Seçenek [String] 'i [String] listesine dönüştürme

Benim Opsiyon [Dize] şuna benzer: ben bu çalıştı bazıları ("değer1'i", "deger2")

ama sonunda hiçbir başarı

def convertOptionToList(a: Option[String]): List[String] = { 

    return a.map(x => x.split(",").toList) 

    } 

ile ben böyle bir şey istiyorum: Liste ("val1", "değer2", "VAL3");

a.toList.flatMap(_.split(",")) 

Ama eğer o gerçekten: do .toList ilk ve ardından .flatMap yerine .map arasında, Alternatif

a.map(_.split(",")).toList.flatten 

:

+0

Evet, ancak istediğim, Liste [String] değil, Seçenek [Liste [Dize]] – user708683

+0

Tam bir örnek ekleyebilir misiniz? Bazıları ("value1", "value2") 'yi bir' Option [String] 'haline getirdiğinizi tam olarak anlayamıyorum. –

cevap

4

sende nereye .toList çıkarın ve sonunda .toList.flatten eklemek Some("value1","value2") gibi görünüyor, daha sonra başlamak için Option[String] değil. Bu bir Option[(String, String)]. Option'un içindeki bir tuple bir çift dizedir. Bu durumda bu yapın:

a.toList.flatMap { case (a,b) => Seq(a,b) } 

(rağmen ben listelerine dizilerini dönüştürerek olmak çok mantıklı sanmıyorum tuples iyidir.).

+0

En iyisi sizsiniz Dima :) – user708683

+0

kullanıyorum: val params = request.queryString.map {case (k, v) => k -> v (0). params.get ("params") bir Seçenek [String] döndürür, bu yüzden bu tür bir dönüşüme ihtiyacım var. Ayrıca bazı ("value1", "value2", "Value3", vb.) Olabilir – user708683