为什么scala方法不接受泛型?

为什么scala方法不接受泛型?,scala,generics,Scala,Generics,我有以下两种方法: def callAlpha = call[T](Constants.Alpha)(_: String)(_: T => T) def call[T](symbol: String)(caller: String)(op: T => T)(implicit ct: ClassTag[T]): String = { // some code } Eclipse抱怨在第一种方法中使用泛型,但在第二种方法中没有。为什么会这样?因为 def callAlpha = ca

我有以下两种方法:

def callAlpha = call[T](Constants.Alpha)(_: String)(_: T => T)

def call[T](symbol: String)(caller: String)(op: T => T)(implicit ct: ClassTag[T]): String = { // some code }
Eclipse抱怨在第一种方法中使用泛型,但在第二种方法中没有。为什么会这样?

因为

def callAlpha = call[T](Constants.Alpha)(_: String)(_: T => T)
右侧有一个未绑定类型变量
T

你可能是说:

def callAlpha[T] = call(Constants.Alpha)(_: String)(_: T => T)
因为在

def callAlpha = call[T](Constants.Alpha)(_: String)(_: T => T)
右侧有一个未绑定类型变量
T

你可能是说:

def callAlpha[T] = call(Constants.Alpha)(_: String)(_: T => T)

在第二个方法中,您包括一个类型参数定义(
[T]
,紧跟在方法名称之后)。这声明了一个名为
T
(您可以随意命名)的类型参数,然后可以在方法的输入参数、输出类型和实现中使用该参数

第一个方法缺少此定义-它尝试使用名为
T
的类型,但未声明此类类型:方法名称(
callAlpha
)后面没有类似的类型参数定义,因此方法体(
call[T](Constants.Alpha)(\uuuquo:String)(\uquo:T->T)
)无法使用它

修复可以很简单-也可以为第一种方法定义
T

def callAlpha[T] = call[T](Constants.Alpha)(_: String)(_: T => T)

在第二个方法中,您包括一个类型参数定义(
[T]
,紧跟在方法名称之后)。这声明了一个名为
T
(您可以随意命名)的类型参数,然后可以在方法的输入参数、输出类型和实现中使用该参数

第一个方法缺少此定义-它尝试使用名为
T
的类型,但未声明此类类型:方法名称(
callAlpha
)后面没有类似的类型参数定义,因此方法体(
call[T](Constants.Alpha)(\uuuquo:String)(\uquo:T->T)
)无法使用它

修复可以很简单-也可以为第一种方法定义
T

def callAlpha[T] = call[T](Constants.Alpha)(_: String)(_: T => T)

在作用域的某个地方是否有声明
type->[a,B]=…
trait->[a,B]{…}
,或者这应该是
T=/code>?啊,应该是T=>在作用域的某个地方有声明
type->[a,B]=…
trait->[a,B]{…
,或者这应该是
T=>T
?啊,应该是T=>T