我有方法
val listPairs = List(("a", "a"), ("b", "a"), ("d", "d"), ("a", "c"))
val sz = listPairs.size
for {
i <- (0 until sz)
j <- (0 until sz)
if i != j && listPairs(i)._1 == listPairs(j)._2
} yield (i, j)
// res1: scala.collection.immutable.IndexedSeq[(Int, Int)] = Vector((0,1), (3,0), (3,1))
我希望能够通过执行以下操作在其他模块中调用它:
for {
i <- (0 until sz)
j <- (i+1 until sz)
if listPairs(i)._1 == listPairs(j)._2
} yield (i, j)
// res2: scala.collection.immutable.IndexedSeq[(Int, Int)] = Vector((0,1))
我似乎无法弄清楚如何获取实际值,而不是无法找到存储该值的Future对象。例如,在C ++中,我可以执行Future<FirebaseUser> getCurrentUser() async {
FirebaseUser user = await _firebaseAuth.currentUser();
return user;
}
,它将阻塞并返回值给我。颤动有什么等效的吗?我是该语言的新手,已经搜索了数小时,似乎无法找到解决此确切问题的方法。
答案 0 :(得分:1)
您还必须等待方法调用中的结果,如下所示:
FirebaseUser currentUser = await class.getCurrentUser();
if (currentUser != null) {
// Do something
}
答案 1 :(得分:1)
从您的代码看来,您实际上只需要1个await
:
Future<FirebaseUser> getCurrentUser() async {
return _firebaseAuth.currentUser();
}
if (await class.getCurrentUser() != null) {
// Do something
}