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

Scala中:::(三重冒号)的用法是什么?

发布时间:2020-12-16 09:55:20 所属栏目:安全 来源:网络整理
导读:我是 scala的新手.我遇到了一个概念,如下所示: { val x = a; b.:::(x) } In this block a is still evaluated before b,and then the result of this evaluation is passed as an operand to b’s ::: method 上述声明的含义是什么.. 我尝试过如下: var a
我是 scala的新手.我遇到了一个概念,如下所示:

{ val x = a; b.:::(x) }

In this block a is still evaluated before b,and then the result of
this evaluation is passed as an operand to b’s ::: method

上述声明的含义是什么..
我尝试过如下:

var a = 10
var b = 20
我应该期待的结果应该是什么.
有人可以举个例子……

提前致谢….

解决方法

:::运算符在 List trait上定义并连接两个列表.像在你的例子中那样在Int上使用它(var a = 10)应该不起作用(除非你自己定义这样的运算符).

以下是它在列表中的工作原理:

val a = List(1,2);
val b = List(3,4);
val c1 = a ::: b  // List(1,2,3,4) 
val c2 = a.:::(b) // List(3,4,1,2)

使用中缀语法(c1)和方法调用语法(c2)调用:::在列表连接的顺序上有所不同(请参阅J?rg的注释).

语句“a仍然在b之前被评估”意味着在将它作为参数传递给方法调用之前评估a.除非方法使用call by name,否则在调用之前就会像在Java中一样评估其参数.

This可以给你一些提示如何搜索Scala运算符和关键字的含义.

(编辑:李大同)

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

    推荐文章
      热点阅读