从scala repl中查看内容
发布时间:2020-12-16 09:19:58 所属栏目:安全 来源:网络整理
导读:我可以在scala repl中创建匿名函数: scala val a = (x: Int) = x * xa: Int = Int = function1 但是,有没有看到内部创建之后? 我正在考虑我将要执行一个功能并返回一个功能的情况.我只是好奇地看到repl创建的返回值,而不仅仅是返回的值的类型,所以像这样:
我可以在scala repl中创建匿名函数:
scala> val a = (x: Int) => x * x a: Int => Int = <function1> 但是,有没有看到内部创建之后? 我正在考虑我将要执行一个功能并返回一个功能的情况.我只是好奇地看到repl创建的返回值,而不仅仅是返回的值的类型,所以像这样: scala> val b = (f: (Int => Boolean)) => (x: Int) => ! (f(x)) b: (Int => Boolean) => (Int => Boolean) = <function1> scala> val c = b((x: Int) => x % 2 == 0) c: Int => Boolean = <function1> 我想看看在c里面生成了什么代码! 解决方法
这是在REPL之外完成的,但您可以使用-print选项使用scalac编译代码.做scalac -help会给你这个选项的描述:
-print Print program with Scala-specific features removed. 我试过这个小程序: object Test { def main(args: Array[String]): Unit = { val a = (x: Int) => x * x } } 它给了我这个输出: $scalac -print Test.scala [[syntax trees at end of cleanup]] // Test.scala package <empty> { object Test extends Object { def main(args: Array[String]): Unit = { val a: Function1 = { (new <$anon: Function1>(): Function1) }; () }; def <init>(): Test.type = { Test.super.<init>(); () } }; @SerialVersionUID(value = 0) final <synthetic> class anonfun$1 extends scala.runtime.AbstractFunction1$mcII$sp with Serializable { final def apply(x: Int): Int = anonfun$1.this.apply$mcII$sp(x); <specialized> def apply$mcII$sp(x: Int): Int = x.*(x); final <bridge> <artifact> def apply(v1: Object): Object = scala.Int.box(anonfun$1.this.apply(scala.Int.unbox(v1))); def <init>(): <$anon: Function1> = { anonfun$1.super.<init>(); () } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- scala – 在模板中处理条件内容的首选Lift方法是什么?
- scala – Play2形式属性 – 在其中“值 – 不是Symbol的成员
- bootstrap nav nav-tabs 选项卡 的使用实例
- 使用Postgres创建OLAP多维数据集并通过.net webservices /
- angularjs – 从图库中选择图像时的离子图像裁剪
- Docker中配置国内镜像设置
- yum安装报错“Error: xz compression not available”
- 窗口 – 我必须做什么来使我的WH_SHELL或WH_CBT挂钩过程从其
- angularjs – 未知提供程序从Angular 1.0切换到1.2.3
- 如何高效快速地优化MySQL、SQL语句(附源码)