Bazı işlemlerin A örneğine uygulanabilir olup olmadığını denetleyen bir işlev var mı, varsa, B veya Hiçbiri örneğini döndürür:Scala: Seçeneklerin bir koleksiyonunu filtrelemek
def checker[A,B](a: A) : Option[B] = ...
Şimdi tüm geçerli olan yeni bir koleksiyon oluşturmak istiyorum B değerlerini geçersiz kılar. Aşağıdaki kod işi yapıyor gibi görünüyor, ama kesinlikle daha iyi bir yol var:
val as = List[A](a1, a2, a3, ...)
val bs =
as
.map((a) => checker(a)) // List[A] => List[Option[B]]
.filter(_.isDefined) // List[Option[B]] => List[Option[B]]
.map(_.get) // List[Option[B]] => List[B]
Teşekkürler!
flatBu tabloyu aç –
@oxbow_lakes Doğru alıntı olduğuna inanıyorum: _ "Bu nedir? Amatör saat? FlatMap bu bok!" _ –
Bu alıntı, twitter kaynaklı mıydı? – huynhjl