Scala:忽略 Future 返回值,但将它们链接在一起

7

当我不关心返回值时,应该如何编写代码。

示例:

for {
    a <- getA // I do not care about a, but I need to wait for the future to finish
    b <- getB
} yield (b)

5
就像这样,你可以写 _ <- getA 来强调你不关心 getA 的结果,但从功能上讲,它们是相同的。 - Michael Zajac
2个回答

9

像这样

for {
     _ <- getA 
     b <- getB
} yield (b)

谢谢您的回答。您能告诉我,下划线的用途叫什么? - Tim Joseph
它是一个代替形式参数的通配符。请参阅Scala参考,第6.23节。 - JimN

2
如果您不喜欢使用for循环的话,可以这样做:
getA.flatMap(_ => getB )

但我认为大多数人会投票支持理解


1
b.map(res => res) 和 b.map(identity) 是相同的。 - mohit
@mohit 天才加上...我还从未使用过那个。 - bwawok
只需要使用 getA.flatMap(_ => getB) 就足够了(对于任何合理的情况,getB.map(identity) 的行为应该与 getB 相同)。 - Alexey Romanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接