gpt4 book ai didi

scala - def layout[A](x : A) = . .. Scala 中的语法

转载 作者:行者123 更新时间:2023-12-01 09:49:54 28 4
gpt4 key购买 nike

我是 Scala 的初学者,正在为 Scala 语法而苦苦挣扎。我从 https://www.tutorialspoint.com/scala/higher_order_functions.htm 得到这行代码.

我知道 (x: A) 是布局函数的参数(表示类型 A 的参数 x)

但是 layout 和 (x: A) 之间的 [A] 是什么?

我一直在谷歌搜索 scala 函数语法,找不到。

def layout[A](x: A) = "[" + x.toString() + "]"

最佳答案

这是一个类型参数,意味着该方法是参数化的(也有人说是“通用”)。没有它,编译器会认为 x: A表示某个具体类型 A 的变量,当它找不到任何此类类型时,它会报告编译错误。

这在静态类型语言中相当普遍;比如Java也有同样的东西,只是语法是<A> .

参数化方法有规则,其中类型可以出现涉及协变和逆变的概念,表示为[+A][-A] .方差绝对不在这个问题的范围内,可能对你来说太多了,但它是一个重要的概念,所以我想我只是提一下,至少让你知道那些加号和减号的含义当你看到它们时(你会的)。

此外,类型参数可以是上限或下限,表示为 [A <: SomeType][A >: SomeType] .这意味着泛型参数需要是另一种类型的子类型/父类(super class)型,在这种情况下是虚构类型 SomeType .

还有更多的构造可以提供有关类型的额外信息(例如,上下文边界,表示为 [A : Foo],用于类型类机制),但您稍后会了解这些。

关于scala - def layout[A](x : A) = . .. Scala 中的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com