当前位置:  开发笔记 > 编程语言 > 正文

在Scala中键入别名优化跳过隐式转换?

如何解决《在Scala中键入别名优化跳过隐式转换?》经验,为你挑选了1个好方法。

我有以下代码:

  type RString = String

  implicit def stringToRString(s:String):RString = s.reverse

  val s = "The Force Awakens"
  val r:RString = s

  println(r)

我有点期待r与之相反,s但它等于s.这是scala编译器采用快捷方式作为RString别名,String因此永远不会调用隐式转换吗?



1> 0__..:

类型别名不会引入类型,它是别名.您可以更换左侧和右侧.因此r: RString是相同的r: String,因此不需要转换.

你需要这样的东西:

object RString {
  // allow RString to be used as a String
  implicit def toString(r: RString): String = r.toString
}
implicit class RString(val peer: String) extends AnyVal {
  override def toString = peer.reverse
}

val s = "The Force Awakens"
val r: RString = s  // "snekawA ecroF ehT"

也就是说,RString是一个新类型,一个反转字符串的值类.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有