“ def apply [T](c:T)”和“ type T; def apply(c:T)”之间有什么区别?

问题描述 投票:0回答:1

我有这个程序:

object B{
  def apply[T](c:T)={}
}

object C{
  type T
  def apply(c:T)={}
}

object A extends App{
  val d=B{println(1);2}
  val e=C{println(1);2}
}

线

val e = C{println(1);2}

告诉我错误:类型不匹配,预计到帐,实际:2

所以我为什么不能写

type T

def apply(c:T)

似乎与]相同>

apply[T](c:T)

以及我写的时候T是什么类型

val d=B{println(1);2}

我可以在这里写很多行!

因为T表示通用,所以它可以是Int,String,用户定义的类Apple,Orange ...

以及什么是

println(1);2

是否有类型的“代码行”?

谢谢!

我有这个程序:对象B {def apply [T](c:T)= {}}对象C {类型T def apply(c:T)= {}}对象A扩展了App {val d = B { println(1); 2} val e = C {println(1); 2}}行val e = C {...

scala generics types type-inference type-members
1个回答
0
投票

块的类型是该块上最后一个表达式的类型。所以

© www.soinside.com 2019 - 2024. All rights reserved.