当前位置:  开发笔记 > 编程语言 > 正文

scala将迭代器[选项[T]]转换为迭代器[T]

如何解决《scala将迭代器[选项[T]]转换为迭代器[T]》经验,为你挑选了3个好方法。

我有一个Iterator[Option[T]]和我想的Iterator[T]那些OptionS其中T isDefined.必须有一个比这更好的方法:

it filter { _ isDefined} map { _ get }

我原本以为在一个结构中它是可能的......有人有什么想法吗?



1> DRMacIver..:

如果it是的话Iterable

val it:Iterable[Option[T]] = ...
it.flatMap( x => x )                //returns an Iterable[T]

如果it是的话Iterator

val it:Iterator[Option[T]] = ...
it.flatMap( x => x elements )       //returns an Iterator[T]
it.flatMap( _ elements)             //equivalent



2> soc..:

在较新的版本中,现在可以:

val it: Iterator[Option[T]] = ...
val flatIt = it.flatten


嗯,是的,你现在.当提问和回答问题时,这不起作用.(如果你不能说,你使用"简单"这个词的含义就是前面的讨论者设法忽略了直截了当的答案.)

3> Jus12..:

这对我有用(Scala 2.8):

it.collect {case Some(s) => s}

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有