接受的答案爲「How to convert a Some(「 」) to None in one-line?」所採取的形式:當它不是一個時,Option如何作爲一個集合?
def convert(x: Option[String]) : Option[String] =
x.map(_.trim()).filterNot(_.isEmpty())
我的問題是,我無法弄清楚如何通過什麼方式由filterNot返回的集合被轉換成一個選項找到。我查看了Scaladoc的Option構造函數,Option對象,Predef,Seq和Seq對象。我認爲這可能是一個隱含的地方,但是如何找到它呢?
它不像一個集合,它就像一個monad。就像收藏一樣。 – 2012-03-06 16:33:27
@LuigiPlinge:foreach和迭代器的東西是一個集合,至少通過_my_ duck test - 這些方法不是monads的內在屬性,它們是?你用什麼方式說它不是一個集合 - 或者你不是? – 2012-03-06 18:18:31
在這個例子中,你說它就像一個集合,因爲它有'map'和'filter'方法。但是這些是monad操作(和'flatMap'一起)。當然,你可以將Options看作集合(甚至可以隱式轉換爲'List'),但對於這個問題並不重要。這就像說'Option'就像'Foo',因爲它們都有'toString'方法。 – 2012-03-06 21:43:33