【问题标题】:Adding object methods implicitly隐式添加对象方法
【发布时间】:2011-10-15 21:59:45
【问题描述】:

有没有办法在 scala 对象中隐式添加方法?

更新: 例如,未过滤的 scala 库具有单例对象 Body,其中包含用于从 http 请求读取正文的方法 Body.string(req: HttpRequest)Body.bytes(req: HttpRequest)。所以,我想在我的域对象中读取正文,例如Body.cars(req:HttpRequest)

【问题讨论】:

  • 请更好地解释你想要什么。

标签: scala object implicit


【解决方案1】:
import scala.language.implicitConversions

object ObjA

object ObjB {
  def x = 1
}

object Main {
    implicit def fromObjA(objA: ObjA.type) = ObjB

    def main(args: Array[String]): Unit = {
        println(ObjA.x)
    }
}

【讨论】:

  • 我没听懂...这是整个源文件吗?喜欢 ObjB.scala 吗?或者这是某些方法实现的一部分?我试着把它放在我的代码中,但没有用......
  • @EduardoBezerra 我更新了使用 2.11.7 的答案,但我现在不使用 Scala,所以欢迎提出任何建议。
【解决方案2】:

隐式添加方法是什么意思?这个代码剪辑器是否回答了您的问题:

implicit def toFunkyString(s: String) = new {
  def reverseUpper = s.reverse.toUpperCase
}

"Foo".reverseUpper  //yields 'OOF'
toFunkyString("Foo").reverseUpper  //explicit invocation

【讨论】:

  • "Foo" 是一个类实例,我的意思是在单例对象中添加方法,例如Math.myMethod(1)。都是一样的吗?
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 2012-01-04
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 2011-05-09
相关资源
最近更新 更多