为什么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