选项上的Scala贴图方法

时间:2016-08-10 07:22:09

标签: scala

我是scala的新手,请帮助我解决以下问题。

我们可以在Option上调用map方法吗? (例如,Option [Int] .map()?)

如果是,那么你能帮我一个例子吗?

3 个答案:

答案 0 :(得分:7)

这是一个简单的例子:

sudo env ARCHFLAGS="-arch x86_64" gem install talib_ruby -- --with-talib-include=/opt/local/var/macports/software/ta-lib/0.4.0_0/opt/local/include/ta-lib  --with-talib-lib=/opt/local/var/macports/software/ta-lib/0.4.0_0/opt/local/lib

这将导致val x = Option(5) val y = x.map(_ + 10) println(y) 。 如果Some(15)代替x,则None也会y

答案 1 :(得分:6)

是:

SELECT *
FROM items
WHERE duration IN (5, 10)
ORDER BY CASE
        WHEN duration = 5 THEN 1
        WHEN duration = 10 THEN 2
        ELSE NULL
    END
    , CASE
        WHEN duration = 5 THEN [date]
        ELSE NULL
    END DESC;

请参阅docs

您可以将选项视为包含0或1项的集合。集合上的Mapp为您提供了一个具有相同数量项目的容器,其结果是将映射函数应用于原始项目中的每个项目。

答案 2 :(得分:0)

有时候,使用fold而不是映射Option更为方便。考虑示例:

scala> def printSome(some: Option[String]) = some.fold(println("Nothing provided"))(println)
printSome: (some: Option[String])Unit

scala> printSome(Some("Hi there!"))
Hi there!

scala> printSome(None)
Nothing provided

您可以轻松地继续使用fold中的实际值,例如对其进行映射或执行任何操作,使用在Option#isEmpty上触发的默认折叠选项,您可以放心。