相关疑难解决方法(0)

一个scala类中的val和对象?

是什么声明字段作为之间的差异val,lazy val以及objectScala的类中,如下面的代码片断:

class A

class B {
  val a1 = new A      { def foo = 1 }
  object a2 extends A { def foo = 1 }
  lazy val a3 = new A { def foo = 1 }
}
Run Code Online (Sandbox Code Playgroud)

scala class object

31
推荐指数
3
解决办法
7686
查看次数

当类型类不在专用源文件中时,为什么Scala不能在伴随对象中隐式定义我的类型类实例?

请参阅下面的源代码.所有源代码都在同一个包中定义.当我定义一个源文件中的所有代码ShowMain.scala,我得到一个编译错误,但是当object ShowMain在被定义ShowMain.scalatrait Showobject Show中定义Show.scala,也没有编译错误.

我的问题: 这是什么原因?我遇到了什么语言规则?

示例代码:

object ShowMain {

  def main(args: Array[String]): Unit = {
    output("hello")
  }

  def output[A](a: A)(implicit show: Show[A]) =
    println(show.show(a))

}

trait Show[-A] {
  def show(a: A): String
}

object Show {

  implicit object StringShow extends Show[String] {
    def show(s: String) = s"[String: $s]"
  }

}
Run Code Online (Sandbox Code Playgroud)

编译错误:

(ScalaIDE/Scala 2.11.2在线包含output("hello"))

Multiple markers at this line
    - not enough arguments for method output: …
Run Code Online (Sandbox Code Playgroud)

scala implicit typeclass companion-object

1
推荐指数
1
解决办法
859
查看次数

标签 统计

scala ×2

class ×1

companion-object ×1

implicit ×1

object ×1

typeclass ×1