v.1.4.0
上面是一个非常简单的片段。返回类型为ratings
。如果没有将xlabels
的值存储在DataSets
中且仍然有def fun = {
val a = Future {println("Inside Future"); throw new Exception("Discomfort in the sea has pulled itself upon me"); 5}
a onComplete {_ => Thread.sleep(5000); println("Inside map") }
a
}
但是仍然可以返回Future
,是否有更好的方法?
答案 0 :(得分:3)
andThen
可以帮助解决副作用。请注意,即使抛出异常,也会忽略对#Create a range of doses:
mm <- data.frame(DOSE = seq(0, max(data$DOSE), length.out = 100))
#Create a new data frame for ggplot using predict and your range of new
#doses:
fit.ggplot=data.frame(y=predict(fit, newdata=mm),x=mm$DOSE)
ggplot(data=data,aes(x=log10(DOSE),y=log(viability)))+geom_point()+
geom_line(data=fit.ggplot,aes(x=log10(x),y=log(y)))
的调用内返回的值。
andThen
答案 1 :(得分:2)
onComplete
返回单位,因此如果您特别想使用onComplete
,则需要临时变量。或者,使用Scala 2.12,您可以使用transform来执行类似的操作。请注意,您始终需要返回值:
def fun = {
Future {
println("Inside Future")
throw new Exception("Discomfort in the sea has pulled itself upon me")
5
}.transform {
res =>
Thread.sleep(5000)
println("Inside map")
res
}
}
任何Scala版本的替代方案是使用相同的主体进行映射和恢复,但它不会那么优雅。