加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

获得Scala for/comprehension表达式的部分

发布时间:2020-12-16 09:31:09 所属栏目:安全 来源:网络整理
导读:有没有人知道如何获得(Scala部分)在实际尝试在REPL(或编译器)之前编译的for / comprehension表达式的desugared翻译? 到目前为止,我发现的唯一的事情是编译器“-print”标志,但是给你全面的Scala翻译… 解决方法 正如我在另一个主题中所说的那样,scalac -
有没有人知道如何获得(Scala部分)在实际尝试在REPL(或编译器)之前编译的for / comprehension表达式的desugared翻译?

到目前为止,我发现的唯一的事情是编译器“-print”标志,但是给你全面的Scala翻译…

解决方法

正如我在另一个主题中所说的那样,scalac -print打印出scala代码,而不是java。它将与java直接兼容的所有scala关键字翻译成正常的scala代码。不可能让编译器只转换零件。但是基本上一个理解是总是以相同的方式翻译。

这样一个简单的/收获

for(x <- List(1,2,3)) yield x*x

将被翻译成

List(1,3).map {x => x*x}

没有收益

for(x <- List(1,3)) println(x)

List(1,3).foreach{x => println(x)}

嵌套的论文将被翻译成嵌套的flatMap / map结构

for(x <- List(1,3); y <- List(4,5,6)) yield x*y

将被翻译成

List(1,3).flatMap { x =>
  List(4,6).map { y =>
    x*y
  }
}

所以绝对没有魔法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读