原 荐 关于 Scala 隐式转换必读的一篇
时间:2022-06-01
本文章向大家介绍原 荐 关于 Scala 隐式转换必读的一篇,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Martin 在 《Programming in Scala Third Edition》 中讲解隐式转换时提到,隐式参数或隐式转换可能来自于当前作用域,或是源类型、目标类型的伴生对象。其实真相并不是那么简单,Martin 没有更深入讲解更多的来源。这些额外的隐式转换来源对库开发者来说非常赞,可以为开发者带来更简洁的开发体验。例如我们在 Play 里经常像下面这样构建一个 JsObject :
import java.time.Instant
import play.api.libs.json.Json
object Test extends App {
println(Json.obj("time" -> Instant.now()))
}
//输出: {"time":"2018-05-25T18:13:23.409Z"}
但是我们发现Json.obj() 方法签名如下:
def obj(fields: (String, JsValueWrapper)*): JsObject
我们并没有导入任何的隐式转换,到底是什么神奇的力量将 Instant.now() 转换成了 JsValueWrapper ? 其实原因很简单,隐式转换有一个来源是目标类型的父对象成员。JsValueWrapper 的父对象是 Json ,Json 对象定义了如下隐式转换:
implicit def toJsFieldJsValueWrapper[T](field: T)(implicit w: Writes[T]): JsValueWrapper = JsValueWrapperImpl(w.writes(field))
更多的隐式转换来源请参考官方的总结的隐式转换圣典。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android读取properties配置文件的实例详解
- Android开发实现popupWindow弹出窗口自定义布局与位置控制方法
- Android编程实现使用handler在子线程中更新UI示例
- Android编程实现图片放大缩小功能ZoomControls控件用法实例
- 详解Android MacAddress 适配心得
- Android编程使用GestureDetector实现简单手势监听与处理的方法
- 【MySQL】通过SQL_Thread快速恢复binlog
- 渗透系列之flask框架开启debug模式漏洞分析
- Android之ImageSwitcher的实例详解
- Android中HTTP请求中文乱码解决办法
- Android编程之播放器MediaPlayer实现均衡器效果示例
- Android studio点击跳转WebView详解
- Android webveiw 出现栈错误解决办法
- Android开发之实现手势滑动的功能
- Android编程实现带有单选按钮和复选按钮的dialog功能示例