加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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)是布局函数的一个参数
(这意味着类型A的参数x)

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

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

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

解决方法

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

在静态类型语言中这是相当常见的事情;例如,Java有相同的东西,只有语法是< A>.

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

此外,类型参数可以是上限或下限,表示为[A&lt ;: SomeType]和[A>:SomeType].这意味着泛型参数需要是另一种类型的子类型/超类型,在这种情况下是一个组合类型SomeType.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读