首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐式转换不导入隐式?

隐式转换不导入隐式?
EN

Stack Overflow用户
提问于 2013-09-17 20:26:29
回答 1查看 214关注 0票数 1

我在Play Framework的Scala控制台中玩了一圈,看起来它似乎在进行隐式转换,而没有在作用域上进行任何隐式防御:

代码语言:javascript
复制
scala> import play.api.libs.json._
import play.api.libs.json._

scala> :implicits
No implicits have been imported other than those in Predef.

scala> Json.arr _
res0: Seq[play.api.libs.json.Json.JsValueWrapper] => play.api.libs.json.JsArray = <function1>

scala> Json.arr(1,2,3)
res1: play.api.libs.json.JsArray = [1,2,3]

如您所见,:implicits的输出显示作用域中唯一的隐式转换是来自scala.Predef的转换。但是,当我将Int值(1,2,3)传递给Json.arr()时,它们将被转换为play.api.libs.json.Json.JsValueWrapper实例。

我的印象是,隐式转换仅在隐式转换处于作用域(即在当前范围中声明或导入)时应用。那么,这种转换是如何发生的呢?

Update:我认为播放控制台一定在做一些事情,因为即使我打开了一个新的控制台并做了一个简单的分配(根本没有导入),转换也会发生:

代码语言:javascript
复制
scala> val x: play.api.libs.json.Json.JsValueWrapper = 1
x: play.api.libs.json.Json.JsValueWrapper = JsValueWrapperImpl(1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 22:21:57

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18859267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档