gpt4 book ai didi

scala - 类型别名优化在 Scala 中跳过隐式转换?

转载 作者:行者123 更新时间:2023-12-04 16:06:09 24 4
gpt4 key购买 nike

我有以下代码:

  type RString = String

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

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

println(r)

我有点期待 rs 的反义词,但它等于 s。这是 Scala 编译器采用快捷方式吗,因为 RStringString 的别名,因此永远不会调用隐式转换?

最佳答案

类型别名不会引入类型,它是一个别名。您可以更换左侧和右侧。因此 r: RStringr: 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是一个新的类型,一个将字符串反转的值类。

关于scala - 类型别名优化在 Scala 中跳过隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34520150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com