我是scala的新手,请帮助我解决以下问题。
我们可以在Option上调用map方法吗? (例如,Option [Int] .map()?)。
如果是,那么你能帮我一个例子吗?
答案 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
上触发的默认折叠选项,您可以放心。