def布局[A](x:A)= … Scala中的语法
发布时间:2020-12-16 10:05:42 所属栏目:安全 来源:网络整理
导读:我是 Scala的初学者,他正在努力学习Scala语法. 我从 https://www.tutorialspoint.com/scala/higher_order_functions.htm获得了代码行. 我知道(x:A)是布局函数的一个参数 (这意味着类型A的参数x) 但是布局和(x:A)之间的[A]是什么? 我一直在谷歌搜索scala函
我是
Scala的初学者,他正在努力学习Scala语法.
我从 https://www.tutorialspoint.com/scala/higher_order_functions.htm获得了代码行. 我知道(x:A)是布局函数的一个参数 但是布局和(x:A)之间的[A]是什么? 我一直在谷歌搜索scala函数语法,找不到它. def layout[A](x: A) = "[" + x.toString() + "]" 解决方法
它是一个类型参数,意味着该方法是参数化的(有些也称为“通用”).没有它,编译器会认为x:A表示某个具体类型A的变量,当它找不到任何这样的类型时,它会报告编译错误.
在静态类型语言中这是相当常见的事情;例如,Java有相同的东西,只有语法是< A>. 参数化方法具有可以发生类型的规则,其涉及协方差和逆变的概念,表示为[A]和[-A].方差绝对不在这个问题的范围内,对你来说现在可能太过分了,但这是一个重要的概念所以我想我只是提到它,至少让你知道那些加号和减号是什么意思当你看到他们(你会). 此外,类型参数可以是上限或下限,表示为[A< ;: SomeType]和[A>:SomeType].这意味着泛型参数需要是另一种类型的子类型/超类型,在这种情况下是一个组合类型SomeType. 还有更多的构造提供了关于类型的额外信息(例如,上下文边界,表示为[A:Foo],用于类型类机制),但是稍后您将了解这些. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |