我正在尝试用akka和scala做点什么,我是新手。我想将“Any”Future的结果附加到类
中的一个字段中所以我把名为T的类定义为
class T {
var a: String =_
var result = List[Any]= List()
}
现在我有一个接收未来值的变量
var futureResult:Future[Any] = //receives a future value
在一个名为addResult的函数中,它接受一个T对象并返回一个未来的T对象。
def addResult(obj1:T):Future[T] ={
var obj2:T = new T()
obj2.a = obj1.a
obj2.result = obj1.result
//I want to append results of futureResult into obj2.result when it is completed
// obj2.result = futureResult :: obj2.result
return Future(obj2)
}
我必须从流程中调用此函数。
val b = Flow[T].mapAsync[T](1)(addResult(_))
答案 0 :(得分:1)
您可以像这样更改注释行:
int numb = 50;
int odd;
int even;
while (numb <= 100) {
if (numb % 2 == 0) {
even = numb;
System.out.println(even);
System.out.print(", ");
numb++;
}
System.out.println("");
if (numb % 2 != 0) {
odd = numb;
System.out.print(odd);
System.out.print(", ");
numb++;
}
}
然后你不需要最后一行。
答案 1 :(得分:1)
首先,正如@ riccardo.cardin所指出的,使用Multiprocessing
作为类的名称是非常糟糕的,因为T
通常指向泛型。
但是,您可以在T
中使用简单的闭包放置任何逻辑,在您的情况下,它看起来像这样:
Future
之后,您可以通过Future {
new T("some string", 1 :: 2 :: 3 :: Nil)
}
,flatMap
或map
组合异步计算,甚至可以将for comprehensive
black magic与cats
结合使用:
|@|
在您的情况下,此转换取决于您的代码逻辑。