You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中for推导式`_ <- func1()`语句的作用解析

关于Scala for推导式中_ <- func1()的作用解析

针对你提出的问题,直接拆解说明:

  • 是func2()的执行闸门:没错,for推导式是按顺序执行的。不管func1()抛出普通异常,还是返回一个代表失败的monad实例(比如Future.failed、Either.Left),后续的func2()都不会执行。只有当func1()成功完成(正常返回对应monad的成功值,比如Future.success、Either.Right),才会进入下一行执行func2()。

  • 正常情况下会丢弃func1()的返回值:_这个占位符就是明确告诉编译器,我们不需要使用func1()的返回结果,所以它的返回值会被直接忽略,不会传递给后续的推导步骤。

  • 不止是简单的“调用并丢弃”:要注意这不是普通的函数调用后丢值,而是在monad上下文里的顺序依赖执行。比如如果func1()和func2()返回Future,func2()会在func1()的Future完成且成功后才开始执行;如果是Option类型,只有func1()返回Some时,func2()才会被调用。

内容的提问来源于stack exchange,提问作者DFL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:35:48