Scala 如何调试隐式转换--隐式转换代码的显示展示

这篇具有很好参考价值的文章主要介绍了Scala 如何调试隐式转换--隐式转换代码的显示展示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法1

在需要隐式转换的地方,把需要的参数显示的写出。

方法2,查看编译代码

在terminal中 利用 scalac -Xprint:typer xxx.scala方法打印添加了隐式值的代码示例。

对于复杂的工程来说,直接跑到terminal执行 scalac -Xprint:typer xxx.scala会报很多库不存在的错误。

BasicTest.scala:5: error: object scalatest is not a member of package org
import org.scalatest.funsuite                                            
           ^                                                             
BasicTest.scala:6: error: object apache is not a member of package org
import org.apache.log4j.Logger                                        
           ^                                                          
BasicTest.scala:7: error: object json4s is not a member of package org
import org.json4s._                                                   
           ^                                                          
BasicTest.scala:8: error: object json4s is not a member of package org
import org.json4s.JsonDSL._     

可在idea的设置中,找到如下配置,写入-Xprint:typer
Scala 如何调试隐式转换--隐式转换代码的显示展示,Scala,scala,开发语言,后端
再到要调试的文件页面,进行编译(快捷键Ctrl+Shift+F9)。然后编译结果就会打印,比如我的如下代码:

  test("json字段覆盖测试"){
    var json = ("name" -> "joe") ~ ("age" -> 35)
    LOGGER.info(compact(render(json)))
    json ~ ("age" -> 38)

    LOGGER.info(compact(render(json)))

    var json2=parse("{\"name\":\"joe\",\"age\":35}")
    json2 = json2 merge render("height",175)

  }

编译输出:文章来源地址https://www.toymoban.com/news/detail-655311.html

    BasicTest.this.test("json�ֶθ���")({
      var json: org.json4s.JsonAST.JObject = org.json4s.JsonDSL.pair2Assoc[String](scala.Predef.ArrowAssoc[String]("name").->[String]("joe"))({
  ((x: String) => org.json4s.JsonDSL.string2jvalue(x))
}).~[Int](scala.Predef.ArrowAssoc[String]("age").->[Int](35))({
        ((x: String) => org.json4s.JsonDSL.string2jvalue(x))
      }, {
        ((x: Int) => org.json4s.JsonDSL.int2jvalue(x))
      });
      BasicTest.this.LOGGER.info(org.json4s.jackson.JsonMethods.compact({
        <artifact> val x$1: org.json4s.JsonAST.JObject = json;
        <artifact> val x$2: org.json4s.Formats = org.json4s.jackson.JsonMethods.render$default$2(x$1);
        org.json4s.jackson.JsonMethods.render(x$1)(x$2)
      }));
      org.json4s.JsonDSL.jobject2assoc(json).~(org.json4s.JsonDSL.pair2jvalue[Int](scala.Predef.ArrowAssoc[String]("age").->[Int](38))({
        ((x: Int) => org.json4s.JsonDSL.int2jvalue(x))
      }));
      BasicTest.this.LOGGER.info(org.json4s.jackson.JsonMethods.compact({
        <artifact> val x$3: org.json4s.JsonAST.JObject = json;
        <artifact> val x$4: org.json4s.Formats = org.json4s.jackson.JsonMethods.render$default$2(x$3);
        org.json4s.jackson.JsonMethods.render(x$3)(x$4)
      }));
      var json2: org.json4s.JValue = org.json4s.jackson.JsonMethods.parse(org.json4s.`package`.string2JsonInput("{\"name\":\"joe\",\"age\":35}"), org.json4s.jackson.JsonMethods.parse$default$2, org.json4s.jackson.JsonMethods.parse$default$3);
      json2 = JsonAST.this.JValue.j2m[org.json4s.JValue](json2).merge[org.json4s.JValue, org.json4s.JsonAST.JValue]({
        <artifact> val x$5: org.json4s.JsonAST.JObject = org.json4s.JsonDSL.pair2jvalue[Int](scala.Tuple2.apply[String, Int]("height", 175))({
          ((x: Int) => org.json4s.JsonDSL.int2jvalue(x))
        });
        <artifact> val x$6: org.json4s.Formats = org.json4s.jackson.JsonMethods.render$default$2(x$5);
        org.json4s.jackson.JsonMethods.render(x$5)(x$6)
      })(JsonAST.this.JValue.jjj[org.json4s.JValue, org.json4s.JValue])
    })((Position.apply("BasicTest.scala", "Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature.", 27): org.scalactic.source.Position))
  }

到了这里,关于Scala 如何调试隐式转换--隐式转换代码的显示展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java调用scala中map转换问题处理

    网上代码 把Javamap转为scala的map代码 我自身是用scala2.11.8, jdk8, 同样代码在本机报错如下: toSeq()方法就一个方法还会不明确也是奇葩, 遂去翻源码,然后发现seq和其他集和对象关系  那么算了不去转到seq了, 我转到他的子类总改明确吧, 遂把代码改成以下两种方式分别实验:  另外

    2024年02月11日
    浏览(41)
  • spring boot java项目整合Scala&Spark,接口api调用方式调用scala代码,配置分享

    版本说明: spring boot: 2.5.9 jdk:1.8 spark:2.4.5 sclala:2.11.12 首先你需要有一个完美的spring boot项目(java版本)能成功运行,这就不赘述了,按照网上的自己搭建吧,然后重要的来了,我捣鼓了两天时间,各样的报错见过了,网上的处理方法要嘛是不全,要嘛是没有用,各种办

    2024年02月10日
    浏览(52)
  • Scala库用HTTP爬虫IP代码示例

    根据提供的引用内容,sttp.client3和sttp.model库是用于HTTP请求和响应处理的Scala库,可以与各种Scala堆栈集成,提供同步和异步,过程和功能接口。这些库可以用于爬虫程序中,用于发送HTTP请求和处理响应。需要注意的是,使用这些库进行爬虫程序开发时,需要遵守相关法律法规

    2024年02月05日
    浏览(46)
  • 如何在Spark Scala/Java应用中调用Python脚本

    本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同 1.PythonRunner 对于运行与 JVM 上的程序(即Scala、Java程序),Spark 提供了 PythonRunner 类。只需要调用PythonRunner 的main方法,就可以在Scala或Java程序中调用Python脚本。在实现上,PythonRunner 基于

    2023年04月24日
    浏览(51)
  • Java核心知识点1-java和c++区别、隐式和显示类型转换

    java和c++区别 java通过虚拟机实现跨平台特性,但c++依赖于特定的平台。 java没有指针,它的引用可以理解为安全指针,而c++和c一样具有指针。 java支持自动垃圾回收,而c++需要手动回收。 java不支持多重继承,只能通过实现多个接口来达到相同目的,而c++支持多继承。  隐式(

    2024年02月03日
    浏览(48)
  • 编写 Scala 工程代码,将 MySQL 库中的表增量抽取到 Hive库中对应表中

    提示:本文采用IDEA编写代码 搭建好spark,推荐一篇较好的文章:spark3.3.0安装部署过程。 注:如果需要运行 yarn 模式,在 spark-env.sh 文件末尾添加: export YARN_CONF_DIR=/opt/hadoop-3.1.3/etc/hadoop export HADOOP_CONF_DIR=/opt/hadoop-3.1.3/etc/hadoop 搭建完spark 集群 后,在spark的 jars 目录下放入mys

    2023年04月14日
    浏览(70)
  • Scala 02——Scala OOP

    前序 为什么说Scala是 纯粹的 OOP? 不支持基本类型,一切皆为对象:Byte,Int… Scala会将基本类型视为对象,还是在JVM上运行,自动与Java的基本数据类型完成拆装箱的操作。 不支持静态:static Java和Scala的 静态 概念的区别 Java Java的静态成员:在Java中,静态成员(属性或方

    2024年04月26日
    浏览(48)
  • Scala 04 —— Scala Puzzle 拓展

    一、占位符 在上面的例子中,两代码的返回结果其实是一样的,都是 List(2,3,4) ,而在第一行中的 _ 叫做占位符,可以让我们的代码更加简洁 但是这并不意味着使用 _ 和箭头函数是同样的结果 在上面的代码中,看起来运行的结果还是一样的,但是事实却不是这样的,当然 lis

    2024年04月27日
    浏览(46)
  • Scala入门,idea关联Scala

    创建maven项目 配置maven仓库 添加Scala插件 添加相关依赖 添加scala的SDK 需要将其提前安装好:安装Scala 创建Scala文件 阶乘 素数 列表中最大的数 计算列表中所有的和 遍历列表 判断天气 九九乘法表 Scala的类可以使用class类定义,用法与 Java 类定义相似。类可以包含成员变

    2024年02月11日
    浏览(45)
  • 【Scala入门】Scala下载及安装(Windows)以及Idea创建第一个scala项目

    目录 一、安装准备 二、Scala下载安装 三、Idea 创建Scala项目 在安装之前,确保你的电脑上装有Jdk 8(Jdk 1.8),且环境变量配置正确。如果没有安装Jdk,请参照其他文章先安装Jdk 8(Jdk 1.8)。 (1)确认环境变量方法:使用Win + R 快捷键调出下面窗口,输入“cmd”,按下回车。

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包