【问题标题】:scala and abstract type "unboxing"scala 和抽象类型“拆箱”
【发布时间】:2013-02-04 15:25:12
【问题描述】:

给定的类

object A {
  type URLT = String
}

case class A(url : URLT)

class ForeignStreamWriter {
  def writeString(str: String) {}
}

trait WriterA {

  val writer : ForeignStreamWriter

  def write(src: A) {
    writer.write(src.url)
  }
}

如何在 writer.write(src.url) 中告诉编译器我正在使用 String 而不是 URLT?我无法修改 ForeignStreamWriter 的签名。

UPD

至于现在我找到了唯一的解决方案

  def write(src: A) {
    writer.write(src.url.asInstanceOf[String])
  }

但我不是很喜欢。

【问题讨论】:

  • 不确定我是否关注。你的编译错误到底是什么?你的意思是writeString(src.url)

标签: scala abstract-type


【解决方案1】:

您需要import A._ 在范围内。顺便说一句,没有它,您的示例无法编译。

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多