Scala中的[A]是什么?

Scala中的[A]是什么?,scala,Scala,我在中看到了[A]。我发现[T]表示任何类型,[S]表示子类型。但是我找不到用于[A]的内容。有趣的是,它正好用在函数名(logging)之后 那么,[A]在Scala中意味着什么呢?这只是一种文化差异。Java社区使用T,而Scala社区使用A,出于同样的原因,在同样的情况下 您可以在Scala中为泛型类型选择任何名称。因此A这里只是泛型类型的名称。它可以是logging[T] 有关更多信息,请参阅和 顺便说一下,要使函数(或方法)成为泛型,必须将泛型类型放在函数名称后面的括号中: def m

我在中看到了
[A]
。我发现
[T]
表示任何类型
[S]
表示子类型。但是我找不到用于
[A]
的内容。有趣的是,它正好用在函数名(
logging
)之后


那么,
[A]
在Scala中意味着什么呢?

这只是一种文化差异。Java社区使用
T
,而Scala社区使用
A
,出于同样的原因,在同样的情况下

您可以在Scala中为泛型类型选择任何名称。因此
A
这里只是泛型类型的名称。它可以是
logging[T]

有关更多信息,请参阅和

顺便说一下,要使函数(或方法)成为泛型,必须将泛型类型放在函数名称后面的括号中:

def myFunc[T](someStuff: T): Boolean = ....


括号中的A只是一个任意类型的参数占位符。它可以是B,C,不管你想用什么。T的使用并不是特别指“类型”,S也不是特别指“子类型”——这只是一些库中使用的一种约定


通常,您可能会使用一个字母作为备忘录,说明特定类型参数的用途,例如,M可能用于幺半群、单子等,这一点很常见。

类似于Java中的
。如果您两个都不知道,请阅读“泛型”。[S]表示子类型”-您在哪里听说的?@ChrisMartin可能我误解了这一点:
Scala中的列表类型是协变的。这意味着对于每一对类型S和T,如果S是T的子类型,那么列表[S]就是列表[T]的子类型。
(Scala中的书籍编程-2010)是的,
S
T
正是作者为该示例选择的。他们可以用其他字母。你的观点有点正确。我的意思是,通过阅读Java标准库代码并将其与Scala标准库代码进行比较,您将看到
T
在Java中无处不在,而
A
在Scala中无处不在。但我想,从这一点上,我们不能断定这是一种文化差异。至少在Scala社区(以Play、Slick、Lift等为例),您会发现泛型类型的不同名称。所以我想,提到这只是泛型类型的一个任意名称会更好地回答这个问题。
def myFunc[T](someStuff: T): Boolean = ....
def myFunc[T](someString: String): T = ....